我已经阅读了一些有关ARC的教程,但我仍然对属性声明感到困惑。我使用以下模式编写了大部分代码:
@property (readwrite, nonatomic) PlayerData* playerData;
@property (readwrite, nonatomic) MusicLayer* musicLayer;
@property (readwrite, nonatomic) bool isPowerUpAvailable;
现在我终于开始处理内存泄漏了XCode建议我在一些代码中我应该在属性声明中添加“retain”关键字。
使用ARC我认为我不应该“打扰”保留计数了。是否有一些概念我没有得到或失踪?任何教程参考或解释将不胜感激。
答案 0 :(得分:4)
ARC将根据属性声明保留对象,对于需要保留的属性,应使用strong
,对于不需要保留的属性,应使用weak
。
weak
属性在取消分配对象时也会被填充。
编译器将始终假定属性为readwrite
,因此不需要以这种方式声明。
@property (strong, nonatomic) PlayerData* playerData;
@property (strong, nonatomic) MusicLayer* musicLayer;
// Need use assign since strong is for objects only.
@property (assign, nonatomic) bool isPowerUpAvailable;
答案 1 :(得分:0)
如果您希望继续使用代码,则只能在所需的特定文件.m
上排除ARC:
转到目标>构建阶段>编译来源并选择您的.m
文件,双击所选内容的右栏,然后添加-fno-objc-arc
,这样您就可以排除ARC
所选文件。
或者如果您想使用ARC将所有应用程序转换为新代码,请在创建项目备份后转到:
修改>重构>转换为Objective-C ARC ,然后点击转换为现代Objective-C Sintax
这里是屏幕:
在尝试复制项目之前注意不要总是工作!
希望这能帮到你