使用弱变量而不是强变量的好处
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
当前推荐的最佳实践是 IBOutlets
为 strong 除非 weak 特别需要避免 retain cycle
.
一般来说,你应该让你的出口 strong,特别是如果你要将出口连接到 subview
或连接到并不总是被保留的约束view hierarchy
。唯一真正需要使出口 弱 的情况是,如果您有一个 custom view
引用了视图层次结构中的某些内容,通常不推荐这样做。
strong:将传入的值赋给它,它会保留传入的值并释放实例变量已有的值
weak: 会将传入的值赋给它而不保留它。
任何人都可以向我提供 link 或有关的信息:
为什么 weak
变量比强变量更有用?
和IBOutlets
中的ARC
,那应该是weak
还是strong
?为什么delegate也被定义为weak 属性?
提前致谢。
世界上的弱者就是weak retain to object,dealloc的时候就是nil,这样就可以避免retain cycle。 IBOutlets 属性 因为视图已经保留了它所以不需要再强保留它。
Apple
当前推荐的最佳实践是 IBOutlets
为 strong 除非 weak 特别需要避免 retain cycle
.
一般来说,你应该让你的出口 strong,特别是如果你要将出口连接到 subview
或连接到并不总是被保留的约束view hierarchy
。唯一真正需要使出口 弱 的情况是,如果您有一个 custom view
引用了视图层次结构中的某些内容,通常不推荐这样做。
strong:将传入的值赋给它,它会保留传入的值并释放实例变量已有的值
weak: 会将传入的值赋给它而不保留它。