Objective-C的:ARC禁止发送的“保留”显式消息(Objective-C: ARC for

2019-07-18 12:54发布

我是新来的Objective-C,我试图端口写入到新的一个旧版本的Objective-C的旧Objective-C的项目,但我得到以下编译器错误:

ARC forbids explicit message send of 'retain'

in 
color = [aColor retain];
or 
color = [[NSColor blackColor] retain];

我在读有关铛现在使用新的自动引用计数。
我也曾尝试使用Xcode的重构功能,但没有运气...什么是需要更换这个老代码正确的Objective-C代码?

Answer 1:

只是:

color = [NSColor blackColor];

ARC将管理对象的生命周期,所以你并不需要releaseretainautorelease任何更长的时间。



Answer 2:

ARC的主要优点是,编译器会自动清除您在项目创建的所有对象的引用。 所以,没有必要保留,释放和自动释放的。 但有些情况下,我们想从ARC释放我们的特别文件。 为了从ARC在Xcode中发布您的项目。 请按照下列步骤。

1.Click your project for Build Phases.
2.Click the drop down menu named as "Compile Sources".
3.Double Click the file that you want to free from ARC.
4.Type the following to set the compiler flag.

       "-fno-objc-arc" 

此标志将释放从ARC Xcode中的编译器的特定文件。

我希望这将帮助您为您的所有项目。



Answer 3:

只是删除保留,因此:

color = [NSColor blackColor]

有了ARC,您不能使用retainreleaseautorelease ,因为它确实它们。



文章来源: Objective-C: ARC forbids explicit message send of 'retain'