【问题标题】:How can I fix this error: "ARC forbids explicit message send of 'release' in Xcode" [duplicate]如何解决此错误:“ARC 禁止在 Xcode 中发送“发布”的显式消息”[重复]
【发布时间】:2013-04-05 21:42:43
【问题描述】:

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

我该如何解决这个问题?

【问题讨论】:

  • 您可以禁用 ARC 作为您的选择转到 [此链接][1],然后尝试一下。 [1]:stackoverflow.com/questions/6646052/…
  • Xcode 有工具“Edit:Refactor:Convert to Objective-C ARC”。

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


【解决方案1】:

解决方案 #1:

只需删除发布声明即可。 ARC 将为您管理。

[imageArray release]; // remove this line

ARC 是自动引用计数。与手动引用计数相反。
WWDC 提供了一些精彩的演讲视频。如果您想观看,我可以提供链接。

Transitioning to ARC Release Notes 中,请参阅 ARC Enforces New Rules

你不能显式调用dealloc,或者实现或调用retain, release、retainCount 或 autorelease。

禁止扩展到使用@selector(retain), @selector(release),等等。

解决方案 #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。

【讨论】:

  • 不过,您可能应该详细说明解决方案 #2。具体来说,-fno-objc-arc 标志是您的朋友。
  • @RichardJ.RossIII:完成。
  • 我删除了行...
  • 对不起,我按回车...我删除了该行,我得到了这个 return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));和错误线程 1:信号 SIGABRT 我只是想制作一个简单的动画,感谢您花时间回答这个问题,无论您身在何处
  • 仍然没有解决动画问题,有人知道如何在 Xcode 上制作简单的动画吗?
猜你喜欢
  • 2014-09-04
  • 2013-10-31
  • 2013-03-11
  • 2016-12-13
  • 2012-08-06
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多