需要有人用ARC的知识来帮助我。
基本上,我已经宣布了一些变量,例如在我的班级
@interface Class{
NSString* one;
NSString* two;
}
@property(nonatomic,weak) NSString* one;
正如你所看到的,我可以设置弱标识符NSString* one
。 不过,我并不需要一个getter / setter方法/合成器NSString* two
,因为它仅仅是一个普通变量。 如何设置一个weak
标签,它所以内存被释放? 或者是自动设置?
你可以像下面这样做:
__weak NSString *two;
但你可能不希望这样做在这种情况下。
声明一个实例变量__weak
意味着基准到目标对象(在你的情况下,字符串)将只要仅作为一些其它物体保持参考存在。 当最后一个对象持有很强的参考版本字符串,您的变量two
将获得nil
自动-ed出来。 当对象保存,相互之间的引用,如父子层次结构,这是非常有用的。 由于您NSString *two
不可能坚持你的对象的引用,使用__weak
参考,因为这是非常值得怀疑。
你可以这样做,而不必担心:
NSString* two = [[NSString alloc] init];
当你的类的实例Class
是因某种原因释放,因为是引用只有一个(理论上) two
,它会被释放。
我的建议(我认为苹果的,虽然我可能是错的),将进入一直使用性质为您高德的习惯,那么这个问题就会消失。