嗨,假设下面的代码:Objective-C的引用计数和自动释放
int main (int argc, const char * argv[])
{
//[...]
Rectangle* myRect = [[Rectangle alloc] init];
Vector2* newOrigin = [[[Vector2 alloc] init] autorelease]; // ref count 1
[newOrigin setX: 50.0f];
[myRect setOrigin: newOrigin]; // ref count 2
[myRect.origin setXY: 25.0f :100.0f]; // ref count goes to 3... why ?
[myRect release];
[pool drain];
return 0;
}
矩形的起源被声明为(保留)合成属性。 只想知道2件事:
- 为什么在使用Rectangle原点的getter访问器时ref ref会变为3?难道我做错了什么 ?
- 由于引用计数为3,我不明白这段代码不能泄漏。由于我在dealloc()中调用了释放源,因此在myRect上调用释放会使其降至2。但是,autorelease何时生效?
谢谢!
好信息。不知道getter叫做retain/autorelease。 非常感谢! – vdsf 2010-06-17 04:33:09
乐于帮助... – bbum 2010-06-17 04:41:25