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