Я делал Objective-C еще тогда, и недавно (т.е. только сейчас) прочитал документацию на сайте Apple относительно использования retain
и release
. Однако на их странице создания приложения для iPhone есть немного кода, который немного смущает меня:
- (void)setUpPlacardView
{
// Create the placard view -- it calculates its own frame based on its image.
PlacardView *aPlacardView = [[PlacardView alloc] init];
self.placardView = aPlacardView;
[aPlacardView release]; // What effect does this have on self.placardView?!
placardView.center = self.center;
[self addSubview:placardView];
}
Не видя весь класс, кажется, что self.placardView
также является PlacardView *
, и присвоение ему aPlacardView
, похоже, не означает, что оно сохранит ссылку на него. Таким образом, мне кажется, что строка, которую я прокомментировал ([aPlacardView release];
), может привести к тому, что aPlacardView
будет иметь счет сохранения 0 и, таким образом, будет освобожден. Так как self.placardView
указывает на это, не будет ли это теперь указывать на освобожденную память и вызывать проблему?