Почти во всех книгах, которые я читаю, и в примерах, которые я читаю, указатели инициализируются таким образом. Скажем, у меня есть переменная класса 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, и, если я что-то упустил, я не вижу разницы.