UICollectionView class 引用委托 属性
UICollectionView class reference delegate property
我在 UICollectionView
头文件中发现了一些我无法理解的东西。我发现委托有一个assign 属性
@property (nonatomic, assign) id <UICollectionViewDelegate> delegate;
这个问题只是为了我的基本理解,因为规则说代表应该有弱 属性。根据我个人的知识,assign 不会对委托对象进行引用计数,但如果对象被释放,它肯定仍然会引用垃圾值。
如何理解这段代码?
strong
和 weak
与 Automatic Reference Counting (ARC). UIKit moved to ARC with iOS 9 一起引入,如果您查看 iOS 9 header(使用 Xcode 7 ) 你会看到这个 属性 现在是 weak
.
你是对的:将 属性 作为 assign
(相当于 unsafe_unretained
),如果在 collection 视图处于活动状态时释放委托, collection 视图的 delegate
属性 将指向释放的 object 曾经所在的位置,并且在引用它时可能会导致崩溃。这不是通常问题,因为委托经常视图控制器拥有collection视图,所以通常 比视图长。但是,这不是保证,这就是为什么您应该在 dealloc
.
中将指向您的 assign
委托设置为 nil
相关堆栈溢出问题:
我在 UICollectionView
头文件中发现了一些我无法理解的东西。我发现委托有一个assign 属性
@property (nonatomic, assign) id <UICollectionViewDelegate> delegate;
这个问题只是为了我的基本理解,因为规则说代表应该有弱 属性。根据我个人的知识,assign 不会对委托对象进行引用计数,但如果对象被释放,它肯定仍然会引用垃圾值。
如何理解这段代码?
strong
和 weak
与 Automatic Reference Counting (ARC). UIKit moved to ARC with iOS 9 一起引入,如果您查看 iOS 9 header(使用 Xcode 7 ) 你会看到这个 属性 现在是 weak
.
你是对的:将 属性 作为 assign
(相当于 unsafe_unretained
),如果在 collection 视图处于活动状态时释放委托, collection 视图的 delegate
属性 将指向释放的 object 曾经所在的位置,并且在引用它时可能会导致崩溃。这不是通常问题,因为委托经常视图控制器拥有collection视图,所以通常 比视图长。但是,这不是保证,这就是为什么您应该在 dealloc
.
assign
委托设置为 nil
相关堆栈溢出问题: