在我閱讀的幾乎所有書籍以及我經歷的例子中,我都會看到用這種方式初始化的指針。假設我想要初始化一個類變量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