Первый вопрос здесь, это касается iPhoneOS3, а не MacOSX. Я довольно новичок в Objective-C, и я никогда не разрабатывал в среде без автоматической сборки мусора, поэтому меня это немного смущает. Вот некоторый допустимый код, назначающий контроллер представления делегату приложения из примера с Apple.com:
MyViewController *aViewController = [[MyViewController alloc]
initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
[self setMyViewController:aViewController];
[aViewController release];
Итак, из того, что я понимаю, я должен выпустить aViewController , потому что он сначала выделен (+1 = 1); затем сохраняется в установщике (+1 = 2); затем освобождается в сеттере (-1 = 1); и затем больше не нужен, так что, наконец, снова освобождается (-1 = 0) и память освобождается. Не могли бы я не пропустить назначение временного объекта aViewController и вложить эти функции следующим образом:
[self setMyViewController:[[MyViewController alloc]
initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]]];
Мне было интересно, будет ли это работать правильно? Я немного волнуюсь, так как сеттер требует указатель на ViewController, а не просто его копию. И так как я передаю только возвращаемое значение, собирается ли указатель на ViewController в установщике указывать на данные, которые могут быть удалены или потеряны до того, как он сможет их назначить? Прошу прощения, если это кажется глупым вопросом, но мне трудно найти ответ где-нибудь, и я пытаюсь найти хорошие методы для сред без сбора мусора. Спасибо!