wangwangwar / daily-notes

Daily Notes
4 stars 0 forks source link

为什么nib中链接到对应view controller中的视图对象默认都是weak属性 #32

Closed ButtFly closed 7 years ago

ButtFly commented 9 years ago

今天在学习reactive cocoa的时候,看到了这样一句话“这里有两个属性:图像视图和订阅者。图像视图是弱引用,因为它归属于上一级视图管理(这是在写UICollectionViewCell子类时的标准做法)。”,看到这里的时候,突然引起了我的一个联想。对的,就是标题。 看到这句话后,我就去思考了一下: UIView 都会有一个强引用的集合属性 subviews ,也就是说, subview 都是被它的 superview 持有的,这个时候,如果你想要方便的找到其中某个特定的 subview 时,也许就会用到属性来引用它。那么,这个时候应该用 weak 还是 strong 呢?个人认为 weakstrong 好。既然 UIView 已经规定好了他们互相的关系,我们就需要优雅的不去打扰。

wangwangwar commented 9 years ago

嗯,确实weakstrong比较容易用错,尤其strong容易被滥用。strong一般用于持有(retain)对象并管理其生命周期,weak只是一个简单的引用,不会retain。从View的生命周期来说,NIB中链接到对应View Controller的视图对象,应该是由这个View Controller中的View来管理其生命周期。View Controller只是一个简单的引用,所以只能用weak