'release' is not available: not available in automatic reference count mode

advertisements

This question already has an answer here:

  • Custom dealloc and ARC (Objective-C) 1 answer
  • error 'autorelease' is unavailable: not available in automatic reference counting mode 2 answers

I'm learning how to program on the iOS operating system using the book "Head first iPhone and iPad development" (second edition).

When I try to compile the code from the book, I get the error that the use release keyword is not allowed in reference counting mode.

Do I have to explicitly release the memory in this case? If yes - how?


Sounds like your book predates ARC.

You can develop an application with the same code if you disable ARC in the project settings:

But... ARC has been out for a while, and iOS changes fast. If the book doesn't mention ARC, it's a probably sign that it targets a version of the iOS SDK less than 5.0, which is not necessarily the best way to learn iOS development these days.

You can roughly translate to an ARC environment by just removing [super dealloc], retain, release, and autorelease from the code you see. But it's valuable to understand why those are there in the first place and why they're no longer necessary with ARC.