I'm trying to make a simple animation image in iPhone from an image array:
- (void)viewDidLoad { NSArray *imageArray; imageArray = [[NSArray alloc] initWithObjects: [UIImage imageNamed:@"sun1"], [UIImage imageNamed:@"sun2"], nil]; fadeImage.animationImages = imageArray; fadeImage.animationDuration = 1; [imageArray release]; //==== HERE IS WHERE I GET THE ERROR ======
How can I fix this?
Solution #1:
Just remove the release statement. ARC will manage it for you.
[imageArray release]; // remove this line
ARC is Auto Reference Counting. As opposite to manual reference counting.
There are a few great videos of talks from WWDC. I can provide the link if you wish to watch them.
In Transitioning to ARC Release Notes, see ARC Enforces New Rules:
You cannot explicitly invoke dealloc, or implement or invoke retain, release, retainCount, or autorelease.
The prohibition extends to using @selector(retain), @selector(release), and so on.
Solution #2:
If you do not wish to convert the code to ARC (e.g. you are not writing a new application, but are maintaining an old one / or you imported so much code that moving to ARC is not worth it) you can disable ARC.
Disabling ARC for selected files To disable ARC, you can use the -fno-objc-arc
compiler flag for specific files. Select the target and go to Build Phases
-> Compile Sources
. Edit the Compiler Flags
and add -fno-objc-arc
Disabling ARC for the project
Source:How to disable Xcode4.2 Automatic Reference Counting
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With