UICollectionView类引用委托属性

时间:2015-08-18 09:08:09

标签: ios objective-c uicollectionview

我在UICollectionView头文件中发现了一些我无法理解的内容。我发现委托有一个assign属性

@property (nonatomic, assign) id <UICollectionViewDelegate> delegate;

这个问题仅仅是为了我的基本理解,因为规则说代表应该有一个弱的属性。根据我的个人知识,assign不会引用计数委托对象,但如果对象被释放,它肯定会引用垃圾值。

我如何理解这段代码?

1 个答案:

答案 0 :(得分:3)

Automatic Reference Counting(ARC)一起引入了{p> strongweakUIKit moved to ARC with iOS 9,如果您查看iOS 9标题(使用Xcode 7),您会看到此属性现在为weak

你是对的:使用assign属性(相当于unsafe_unretained),如果在集合视图处于活动状态时释放委托,则集合视图的delegate属性将指向释放对象的位置,并在引用时可能导致崩溃。这通常不是 问题,因为委托经常拥有集合视图的视图控制器,因此通常比视图更长。但是,这不是一种保证,这就是为什么您应该在assign中将nil代表指向dealloc的代理人。{/ p>

相关的Stack Overflow问题: