Автоматический подсчет ссылок в Cocoa-touch - встроенная лучшая практика - PullRequest
0 голосов
/ 17 октября 2011

До того, как ARC был создан для разработки на ios, я использовал что-то подобное в viewDidLoad для настройки элементов навигации:

self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneClicked:)] autorelease];

Как я могу реализовать это правильно, когда ARC включен для моего контроллера представления, сохраняя при этом сделку в 1 строку?

Я знаю о добавлении __autoreleasing, __strong и т. Д., Но я не понимаю, как я могу создать rightBarButtonItem, не разбивая его на 2 строки, например:

__autoreleasing UIBarButtonItem *rightBarItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneClicked:)];
self.navigationItem.rightBarButtonItem = rightBarItem;

1 Ответ

3 голосов
/ 18 октября 2011

Вам не нужно использовать __autoreleasing в этой ситуации. RightBarButtonItem имеет строгую ссылку для назначенного объекта, и затем назначенный объект будет автоматически освобожден при отпускании rightBarButtonItem (при освобождении UINavigationBar).

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneClicked:)];
...