需要有ARC知识的人来帮助我。
基本上,我已经在我的班级
中声明了一些变量@interface Class{
NSString* one;
NSString* two;
}
@property(nonatomic,weak) NSString* one;
如您所见,我可以将弱标识符设置为NSString* one
。但是,我不需要NSString* two
的getter / setter / synthesizer,因为它只是一个常见的变量。如何为其设置weak
标签以便释放内存?或者是自动设置?
答案 0 :(得分:5)
你可以这样做:
__weak NSString *two;
但在这种情况下,你可能不希望想要。
声明实例变量__weak
意味着只要某个其他对象拥有引用,对目标对象(在您的情况下为字符串)的引用将存在。当持有强引用的最后一个对象释放字符串时,您的变量two
将自动显示nil
。当对象持有彼此的引用时,例如在父子层次结构中,这非常有用。由于您的NSString *two
无法保留对象的引用,因此使用__weak
引用非常值得怀疑。
答案 1 :(得分:0)
你可以这样做而不用担心:
NSString* two = [[NSString alloc] init];
当您的类Class
的实例由于某种原因而被释放时,因为它是唯一一个(在理论上)引用two
的实例,它将被释放。
答案 2 :(得分:0)
我的建议(我认为Apple虽然我可能错了)将养成习惯使用iVars的属性,然后这个问题就消失了。