IOS,ARC,属性:(读写,非原子)VS(radwrite,保留,非原子)(IOS, ARC, P

2019-08-18 05:07发布

我已经阅读了关于ARC一些教程和我仍然留下了有点混乱的特性声明。 我使用下面的模式写了最大多数我的代码:

@property (readwrite, nonatomic) PlayerData* playerData;
@property (readwrite, nonatomic) MusicLayer* musicLayer;
@property (readwrite, nonatomic) bool isPowerUpAvailable;

现在,我终于开始处理内存泄漏的XCode建议我在一些代码位,我应该已经添加的属性声明“保留”的关键字。

使用ARC我想我不应该“打扰”关于保留计数了。 有一些概念,我没有收到或丢失? 任何教程引用或解释将不胜感激。

Answer 1:

ARC是将保留根据财产申报的对象,你应该使用strong对于需要保留和属性weak对于不需要保留的属性。

weak当对象被释放性能也nilled。

编译器总是假定属性是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;


Answer 2:

如果您愿意继续使用你的代码,你只能在特定的文件中排除ARC .m你想要的:

转到目标>构建阶段>编译源代码 ,然后选择您.m上的选择右栏双击文件,并添加-fno-objc-arc所以你排除ARC只是一个选择的文件。

或者,如果你想所有的应用程序与ARC新的代码转换,做一个备份你的项目后,请访问:

编辑>重构>转换成Objective-C的ARC并在此之后做相同的,但点击转换为现代的Objective-C Sintax

这里的画面:

注意之前并不总是工作,试图复制您的项目!

希望这有助于您



文章来源: IOS, ARC, Property: (readwrite, nonatomic) vs (radwrite, retain, nonatomic)