使用弱变量而不是强变量的好处

Benefits of using Weak variable instead of strong

任何人都可以向我提供 link 或有关的信息:

为什么 weak 变量比强变量更有用?

IBOutlets中的ARC,那应该是weak还是strong?为什么delegate也被定义为weak 属性?

提前致谢。

世界上的弱者就是weak retain to object,dealloc的时候就是nil,这样就可以避免retain cycle。 IBOutlets 属性 因为视图已经保留了它所以不需要再强保留它。

Apple 当前推荐的最佳实践是 IBOutletsstrong 除非 weak 特别需要避免 retain cycle.

一般来说,你应该让你的出口 strong,特别是如果你要将出口连接到 subview 或连接到并不总是被保留的约束view hierarchy。唯一真正需要使出口 的情况是,如果您有一个 custom view 引用了视图层次结构中的某些内容,通常不推荐这样做。

strong:将传入的值赋给它,它会保留传入的值并释放实例变量已有的值

weak: 会将传入的值赋给它而不保留它。

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//apple_ref/doc/uid/TP40011210-CH5-SW3