设置弱到非@property变量(Setting WEAK to a non @property v

2019-09-19 03:18发布

需要有人用ARC的知识来帮助我。

基本上,我已经宣布了一些变量,例如在我的班级

@interface Class{
    NSString* one;
    NSString* two;
}

@property(nonatomic,weak) NSString* one;

正如你所看到的,我可以设置弱标识符NSString* one 。 不过,我并不需要一个getter / setter方法/合成器NSString* two ,因为它仅仅是一个普通变量。 如何设置一个weak标签,它所以内存被释放? 或者是自动设置?

Answer 1:

可以像下面这样做:

__weak NSString *two;

但你可能不希望这样做在这种情况下。

声明一个实例变量__weak意味着基准到目标对象(在你的情况下,字符串)将只要仅作为一些其它物体保持参考存在。 当最后一个对象持有很强的参考版本字符串,您的变量two将获得nil自动-ed出来。 当对象保存,相互之间的引用,如父子层次结构,这是非常有用的。 由于您NSString *two不可能坚持你的对象的引用,使用__weak参考,因为这是非常值得怀疑。



Answer 2:

你可以这样做,而不必担心:

NSString* two = [[NSString alloc] init];

当你的类的实例Class是因某种原因释放,因为是引用只有一个(理论上) two ,它会被释放。



Answer 3:

我的建议(我认为苹果的,虽然我可能是错的),将进入一直使用性质为您高德的习惯,那么这个问题就会消失。



文章来源: Setting WEAK to a non @property variable