我在UICollectionView
头文件中发现了一些我无法理解的内容。我发现委托有一个assign属性
@property (nonatomic, assign) id <UICollectionViewDelegate> delegate;
这个问题仅仅是为了我的基本理解,因为规则说代表应该有一个弱的属性。根据我的个人知识,assign不会引用计数委托对象,但如果对象被释放,它肯定会引用垃圾值。
我如何理解这段代码?
答案 0 :(得分:3)
strong
和weak
。 UIKit moved to ARC with iOS 9,如果您查看iOS 9标题(使用Xcode 7),您会看到此属性现在为weak
。
你是对的:使用assign
属性(相当于unsafe_unretained
),如果在集合视图处于活动状态时释放委托,则集合视图的delegate
属性将指向释放对象的位置,并在引用时可能导致崩溃。这通常不是 问题,因为委托经常拥有集合视图的视图控制器,因此通常比视图更长。但是,这不是一种保证,这就是为什么您应该在assign
中将nil
代表指向dealloc
的代理人。{/ p>
相关的Stack Overflow问题: