我正在尝试从图像数组中在iPhone中制作一个简单的动画图像:
- (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 ======
我该如何解决这个问题?
答案 0 :(得分:78)
解决方案#1:
只需删除发布声明即可。 ARC将为您管理它。
[imageArray release]; // remove this line
ARC是自动引用计数。与手动引用计数相反。
有一些很棒的WWDC会谈视频。如果您想观看,我可以提供链接。
在Transitioning to ARC Release Notes中,请参阅 ARC强制执行新规则:
您无法显式调用dealloc,或实现或调用retain, 发布,retainCount或autorelease。
禁止延伸到使用@selector(retain), @selector(发布),等等。
解决方案#2:
如果您不希望将代码转换为ARC(例如,您没有编写新的应用程序,但是维护旧的应用程序,或者您导入的代码很多,那么移动到ARC是不值得的)您可以禁用ARC
禁用所选文件的ARC 要禁用ARC,可以对特定文件使用-fno-objc-arc
编译器标志。选择目标
并转到Build Phases
- > Compile Sources
。修改Compiler
Flags
并添加-fno-objc-arc
。
为项目禁用ARC
来源:How to disable Xcode4.2 Automatic Reference Counting