我正在阅读有关内存管理的所有文档,对于某些事情感到有些困惑。
当您使用@property时,它会为对象创建getter/setter:
.h: @property (retain, nonatomic) NSString *myString
.m: @synthesize myString
我理解这一点,但让我困惑的是self的使用。我在不同的博客和书籍中看到了不同的语法,例如:
myString = [NSString alloc] initWithString:@"Hi there"];
或者self.myString = [NSString alloc] initWithString:@"Hi there"];
接着在dealloc方法中我看到:
self.myString = nil;
或者[myString release];
或者self.myString = nil;
[myString release];
在这个网站上,有人说使用self会使保留计数增加一个?这是真的吗,我没有在其他地方看到过。提供的自动getter/setter是否是autorelease的?
哪种方式是正确的?
谢谢!
dealloc
中使用self.article = nil
是“冒险”的,因为self
可能已经部分地被释放了。我个人认为这不是什么大问题,并且会尽可能地使用属性。 - vicvicvic