В xcode после создания подкласса UIViewController в методе viewDidUnload есть комментарий, добавленный xcode:
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
Здесь xcode рекомендует использовать self.myOutlet = nil для освобождения объекта.
Но в xcode4 есть классная функция: вы можете просто перетащить выход Interface Builder в заголовочный файл его владельца, тогда xcode автоматически создаст объект IBOutlet и соответствующий код выпуска в методе viewDidUnload.
Проблема в приведенном выше сценарии, сгенерированный код выглядит примерно так:
- (void)viewDidUnload {
[super viewDidUnload];
[self setFoo:nil];
}
Я упоминаю, что "self.foo = nil;" заменяется на «[self setFoo: nil];».
Кто-нибудь знает разницу? Если нет никакой разницы, почему xcode4 меняет это?
Спасибо.