В настоящее время меня беспокоит небольшая проблема понимания Objective-C.В качестве примера, следующего за книгой Аарона Хиллегаса, я задаюсь вопросом о присвоении NSString
в методе init
класса значения, как в этом примере (Для людей, которые знают книгу, это используется в классе Person
RaiseMan):
- (id)init
{
if(![super init])
return nil;
myString = @"New entry";
return self;
}
Эта строка не выделена мной, поэтому обычно я не должен беспокоиться о ее освобождении.
НО!Что происходит в методе установки этой строки?Следуя правилам управления памятью, метод должен выглядеть следующим образом:
- (void)setMyString:(NSString *)newString
{
if(myString != newString) {
[myString release];
[newString retain];
myString = newString;
}
}
Почему работает [myString release]
?Я где-то читал, что с = @"bla"
назначенные строки не могут быть освобождены.
И правильно ли инициализируется с = @"bla"
?Или я должен использовать alloc
и init
вместо?
Спасибо за любую помощь:)