【问题标题】:UICollectionView class reference delegate propertyUICollectionView 类引用委托属性
【发布时间】:2015-08-18 09:08:09
【问题描述】:

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

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

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

如何理解这段代码?

【问题讨论】:

    标签: ios objective-c uicollectionview


    【解决方案1】:

    strongweakAutomatic Reference Counting (ARC) 一起引入。 UIKit moved to ARC with iOS 9,如果您查看 iOS 9 标头(使用 Xcode 7),您会看到该属性现在是 weak

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

    相关堆栈溢出问题:

    【讨论】:

    • 嗯,我深信不疑。 :) 这对我来说有点不合逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2014-11-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多