在我阅读的几乎所有书籍以及我经历的例子中,我都会看到用这种方式初始化的指针。假设我想要初始化一个类变量NSString * myString。我几乎总能看到这样做:为什么他们这样初始化指针?
-(id)init {
if (self = [super init]) {
NSString *tempString = [[NSString alloc] init];
self.myString = tempString;
[tempString release];
}
return self;
}
为什么我不能只是做下面的事情?
-(id)init {
if (self = [super init]) {
self.myString = [[NSString alloc] init];
}
return self;
}
我不明白为什么多余的tempString是曾经需要摆在首位,但我可以在这里失去了一些东西与内存管理。我想让事情可以接受还是会导致某种泄漏?我已经阅读了developer.apple.com上的“内存管理指南”,除非我错过了一些东西,否则我没有看到其中的差异。
因此,如果没有autorelease,最后的保留数是2? – Rob 2010-05-04 13:11:07
是,'+ 1'为alloc,'+ 1'为保留属性。 – 2010-05-04 13:21:02
完美!现在完成感觉感谢... – Rob 2010-05-04 13:30:52