Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 类扩展中声明的变量是否具有强引用?_Ios_Objective C - Fatal编程技术网

Ios 类扩展中声明的变量是否具有强引用?

Ios 类扩展中声明的变量是否具有强引用?,ios,objective-c,Ios,Objective C,如果我在.m文件的上声明一个变量,它是否都具有强引用?这样申报可以吗 @interface ClassA () { UILabel *timeLabel; BOOL isNewUI; } @end @implementation ClassA 声明变量的方式称为使用iVar,默认情况下这些变量很强。我不建议以这种方式声明变量,因为它不允许轻松重写getter/setter或将其标记为只读 相反,我建议您以以下方式声明变量: @i

如果我在.m文件的上声明一个变量,它是否都具有强引用?这样申报可以吗

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

    @implementation ClassA

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

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

@interface ClassA ()

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

@end

@implementation ClassA

@end

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

如果您仅在类A中访问,那么它很好,默认情况下是强的,否则如果您希望访问对象的多个类use@属性,这实际上不是一个扩展,是的,默认情况下,它将是
strong
。简言之:它是强引用。实际上,苹果文档称之为“谢谢”,您的回答帮助很大。事实上,苹果的文档称之为ivar的是完全好的,他们使用的是ARC。默认情况下,它们是强的,但是如果您想使它们变弱,您可以这样做:
\uu弱UILabel*timeLabel。如果您不需要重写getter或setter,或者不打算使用“readonly”,则不必使用
@property
。这是一个扩展。我已更正,我同意它是一个扩展。为了反映这一点,我修改了我的回答