对于没有弱属性的IOS 4.0使用ARC真的是一个很好的选择

时间:2012-11-07 09:08:55

标签: objective-c cocoa-touch automatic-ref-counting unsafe-unretained

我正在开发一个基于ARC的项目。我的项目针对的是IOS 4.3。由于版本没有弱指针< IOS 5.0,我必须使用unsafe_unretained,这可能会导致悬空指针。

现在我在想,是不是真的,选择使用ARC和unsafe_unretained?或者我应该切换回手动内存管理,因为我的项目是针对IOS 4.3的。?

如果在我的情况下使用ARC是一个不错的选择,我应该在哪里将unsafe_unretained属性设置为nil?我见过人们在viewDidUnload中执行此操作,但在正常情况下从不调用viewDidUnload。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

  

我必须使用unsafe_unretained,这可能会导致悬空指针。

是的,但是在预ARC之前,你还使用了未使用指针的弱引用,所以它并不比你现在正在做的更糟糕。

我还要补充一点,如果您使用PLWeakCompatibility库,则可以在定位iOS 4.3时使用weakhttps://github.com/plausiblelabs/PLWeakCompatibility

答案 1 :(得分:0)

  

使用ARC真的是一个不错的选择[不支持弱]吗?

是。 ARC通常被认为是代码简洁,可读性和减少内存相关错误数量的一大优势。我个人认为这是ARC的主要好处。

对弱者的支持很好,ARC的另一个优点(在iOS 5上)。但有时__weak可以隐藏会立即弹出__unsafe_unretained的错误。

在我的代码中,每当我使用weak属性或变量时,我都要考虑后果。另一方面,ARC的其他内存管理要求我少思考(这很好)。