Любое из этих решений будет приемлемым. Я думаю, что если вы просто передадите ему одну строку, этого свойства будет достаточно. Я сохранял методы инициализации для более сложных объектов. Вот одна из тех, которые я недавно сделал для таблицы «рекордов», в которой при нажатии на строку отображается профиль в стеке:
ProfileController *profileController = [[ProfileController alloc] initWithNibName:@"ProfileController" bundle:nil];
// pass the controller the player object
[profileController showProfile:player];
// show it by pusing it on the stack
[self pushViewController:profileController animated:YES];
[profileController release];
Я мог бы создать другой инициализатор, такой как
ProfileController *profileController = [[ProfileController alloc] initWithPlayer:player];
вместо этого. Это выглядит немного элегантнее, но, как я уже сказал, подойдет любой из ваших подходов.