好的,看着这个:
Apple docs: Declared Properties
如果向下滚动到dealloc,则显示为:
“通常在dealloc方法中,您应该直接释放对象实例变量(而不是调用set访问器并将nil作为参数传递),如下例所示:”
- (void)dealloc {
[property release];
[super dealloc];
}
“但是,如果您正在使用现代运行时并合成实例变量,则无法直接访问实例变量,因此必须调用访问器方法:”
- (void)dealloc {
[self setProperty:nil];
[super dealloc];
}
现在,我必须拥有至少15到20本关于iOS开发的书籍。我不能说我曾经见过这些书中的任何代码,建议除了以外做任何其他事情:
[someproperty release];
是否有令人信服的理由来编辑一堆代码文件,这些代码文件非常适合采用Apple的推荐?未来的工作怎么样?或者,它们几乎相同吗?
答案 0 :(得分:2)
Apple的文档似乎仅适用于您默认情况下合成的情况。如果你关闭它,这似乎是默认情况,你需要@synthesize,它允许你直接访问变量。
就个人而言,我这样做:
@synthesize someProperty=_someProperty;
这样我就可以了:
- (void)dealloc {
[_someProperty release];
[super dealloc];
}
有关详情,请参阅Jeff LaMarche's blog。
答案 1 :(得分:1)
在现代运行时,您不再需要为属性声明实例变量,也不必在实现中编写@synthesize
。如果你的代码已经声明了实例变量,那么就没有理由用调用set accessor来替换调用release的代码(你粘贴的第一个引用甚至说明了这一点。)