首页 > 解决方案 > 类扩展中声明的变量是否具有强引用?

问题描述

如果我在 .m 文件的类扩展上声明一个变量,它会是强引用吗?这样申报可以吗?

    @interface ClassA ()
    {
      UILabel *timeLabel;
      BOOL isNewUI;
    }
    @end

    @implementation ClassA

标签: iosobjective-c

解决方案


您声明变量的方式称为使用 iVar,默认情况下这些是强大的。我不建议以这种方式声明变量,因为它不允许您轻松覆盖 getter/setter 或将其标记为只读。

相反,我建议您通过以下方式声明变量:

@interface ClassA ()

    @property (strong, nonatomic) UILabel *timeLabel;
    @property (assign, nonatomic) BOOL isNewUI;

@end

@implementation ClassA

@end

这将允许您选择您的 UILabel 属性是强还是弱。如果它很弱并且从您的视图中删除,那么 ARC 将负责为您删除参考。


推荐阅读