Есть ли более быстрый способ сделать @property, @synthesize и выпустить переменную класса? - PullRequest
13 голосов
/ 06 сентября 2011

Я знаю, @synthesize уже сократил мою работу по написанию геттеров и сеттеров. Но одна из распространенных процедур, которые мне часто приходится использовать, - это 4 шага, например

  1. SomeView *abc;
  2. @property(nonatomic,retain)SomeView *abc;
  3. @synthesize abc;
  4. [abc release];

Кто-нибудь придумал, где я пишу SomeView *abc; в .h и шаги 2,3,4 генерируются автоматически?

Ответы [ 4 ]

5 голосов
/ 06 сентября 2011

Пропустите первый шаг, в этом нет необходимости, @synthesize создаст ивар.

4 голосов
/ 06 сентября 2011

Если это IBOutlet, Xcode напишет весь этот код для вас, когда вы создадите переменную с помощью IB. Вы просто перетаскиваете объект, на который хотите сослаться в редакторе интерфейса, в то место в файле заголовка, где требуется объявление свойства, заполняете форму и нажимаете OK.

Как уже упоминали другие, вы можете пропустить объявление поддерживающего ивара в пользу того, чтобы @synthesize сгенерировал его для вас.

Вы можете пропустить @synthesize, используя соответствующие флаги компилятора. Поищите в Интернете что-то вроде «default @synthesize».

Один из способов пропустить -dealloc - это свисать объекты с вашего основного объекта с помощью API-интерфейса, связанного с Obj-C. Сохраненные связанные объекты будут освобождены после освобождения объекта, с которым они связаны.

И еще есть автоматический подсчет ссылок (ARC), который устраняет -dealloc гораздо более четко и окончательно.

1 голос
/ 06 сентября 2011

Это не плохая вещь, чтобы желать. И это уже сделано для вас в некоторых случаях:

В Интерфейсном Разработчике Xcode 4, когда вы перетаскиваете элемент в файл .h его владельца, он делает это 1-4 для вас и даже устанавливает для него значение nil в viewDidUnload.

  1. Не требуется в современной среде выполнения.
  2. Все еще нужно сделать это.
  3. Об этом говорили на сессиях WWDC10 (113 и 144), но в примечаниях к выпуску говорится, что этого еще не произошло.
  4. Используйте ARC, и вам это не нужно.

Это 2 из 4, которые вам не нужны, и тот, над которым они работают. Так что это еще не все - но это становится легче.

1 голос
/ 06 сентября 2011

Это не большая помощь, но я делаю одну вещь - перемещаю dealloc в начало реализации, опережая другие методы.Операторы @synthesize находятся прямо над этим, поэтому вы можете добавлять @synthesize и выпуск часто без необходимости прокрутки.Это не очень экономит время при кодировании, но помогает поддерживать синхронизацию двух разделов, и это экономит время при отладке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...