如何修复此错误:“ARC禁止在Xcode中显式发送'release'消息”

时间:2013-04-05 21:42:43

标签: iphone objective-c animation automatic-ref-counting

我正在尝试从图像数组中在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 ======

我该如何解决这个问题?

1 个答案:

答案 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

    • 点击左侧管理器中的项目。
    • 在下一栏中选择您的目标。
    • 选择顶部的“构建设置”标签。
    • 向下滚动到“Objective-C自动参考计数”(可能会列为
    • “用户定义的设置”组下的“CLANG_ENABLE_OBJC_ARC”),并将其设置为NO。