我正在开发一个基于ARC的项目。我的项目针对的是IOS 4.3。由于版本没有弱指针< IOS 5.0,我必须使用unsafe_unretained
,这可能会导致悬空指针。
现在我在想,是不是真的,选择使用ARC和unsafe_unretained?或者我应该切换回手动内存管理,因为我的项目是针对IOS 4.3的。?
如果在我的情况下使用ARC是一个不错的选择,我应该在哪里将unsafe_unretained属性设置为nil?我见过人们在viewDidUnload中执行此操作,但在正常情况下从不调用viewDidUnload。非常感谢任何帮助。
答案 0 :(得分:1)
我必须使用unsafe_unretained,这可能会导致悬空指针。
是的,但是在预ARC之前,你还使用了未使用指针的弱引用,所以它并不比你现在正在做的更糟糕。
我还要补充一点,如果您使用PLWeakCompatibility库,则可以在定位iOS 4.3时使用weak
:https://github.com/plausiblelabs/PLWeakCompatibility
答案 1 :(得分:0)
使用ARC真的是一个不错的选择[不支持弱]吗?
是。 ARC通常被认为是代码简洁,可读性和减少内存相关错误数量的一大优势。我个人认为这是ARC的主要好处。
对弱者的支持很好,ARC的另一个优点(在iOS 5上)。但有时__weak
可以隐藏会立即弹出__unsafe_unretained
的错误。
在我的代码中,每当我使用weak
属性或变量时,我都要考虑后果。另一方面,ARC的其他内存管理要求我少思考(这很好)。