Closed ButtFly closed 7 years ago
嗯,确实weak
和strong
比较容易用错,尤其strong
容易被滥用。strong
一般用于持有(retain)对象并管理其生命周期,weak
只是一个简单的引用,不会retain。从View
的生命周期来说,NIB中链接到对应View Controller
的视图对象,应该是由这个View Controller
中的View
来管理其生命周期。View Controller
只是一个简单的引用,所以只能用weak
。
今天在学习reactive cocoa的时候,看到了这样一句话“这里有两个属性:图像视图和订阅者。图像视图是弱引用,因为它归属于上一级视图管理(这是在写UICollectionViewCell子类时的标准做法)。”,看到这里的时候,突然引起了我的一个联想。对的,就是标题。 看到这句话后,我就去思考了一下: UIView 都会有一个强引用的集合属性 subviews ,也就是说, subview 都是被它的 superview 持有的,这个时候,如果你想要方便的找到其中某个特定的 subview 时,也许就会用到属性来引用它。那么,这个时候应该用 weak 还是 strong 呢?个人认为 weak 比 strong 好。既然 UIView 已经规定好了他们互相的关系,我们就需要优雅的不去打扰。