Objective c 在没有弱属性的情况下,使用ARC for IOS 4.0真的是一个好选择吗

Objective c 在没有弱属性的情况下,使用ARC for IOS 4.0真的是一个好选择吗,objective-c,cocoa-touch,automatic-ref-counting,unsafe-unretained,Objective C,Cocoa Touch,Automatic Ref Counting,Unsafe Unretained,我正在做一个基于ARC的项目。我的项目以IOS 4.3为目标。由于版本

我正在做一个基于ARC的项目。我的项目以IOS 4.3为目标。由于版本不安全\u unrepaired,这可能会导致指针悬空

现在我在想,在不安全的情况下使用ARC真的是一个很好的选择吗?或者我应该切换回手动内存管理,因为我的项目是针对IOS 4.3的

如果在我的情况下使用ARC是一个不错的选择,我应该在哪里将不安全的未恢复属性设置为nil?我见过有人在viewDidUnload中这样做,但在正常场景中从未调用viewDidUnload。非常感谢您的帮助

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

对。ARC通常被认为在代码简洁性、可读性和减少与内存相关的错误数量方面具有很大的优势。我个人认为这是ARC的主要优点

对弱电的支持很好,这也是ARC的另一个优点(在iOS 5上)。但有时
\uuu-weak
会隐藏那些会随着
\uu-unsafe\u-unretained而立即弹出的bug

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

我必须使用不安全的未修复,这可能会导致指针悬空

是的,但在预弧中,您还使用未恢复的指针作为弱引用,所以它并不比您现在所做的更糟糕


我还想补充一点,如果您使用PLWeakCompatibility库,您可以在针对iOS 4.3时使用

但由于不安全的未维护可能会导致指针悬空,我应该将其设置为nil。我见过有人在viewDidUnload中这样做,但在正常情况下从未调用viewDidUnload。我应该在哪里将这些设置为nil?@Raj这在很大程度上取决于属性包含的内容以及这些内容的生命周期。用一句话回答这个问题是不可能的。但与MRC代码相比,实际上没有什么变化,在MRC代码中,您必须以相同的方式关注
分配属性。如果有疑问,只需使用
strong
properties。在所有情况下,unsafe_unrepaired会导致指针悬空吗?@Raj是的,当在属性或ivar上使用
unsafe_unrepaired
并且它指向的对象被解除分配时,指针悬空(这不一定是坏事).@Raj不。它们具有崩溃的可能性,但不会泄漏内存。