Подтвердить что ты не робот

Есть ли более быстрый способ делать @property, @synthesize и выпускать переменную класса?

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

  • SomeView *abc;
  • @property(nonatomic,retain)SomeView *abc;
  • @synthesize abc;
  • [abc release];

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

4b9b3361

Ответ 1

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

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

Вы можете пропустить @synthesize с помощью соответствующих флагов компилятора. Найдите в Интернете что-то вроде "default @synthesize".

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

Неплохо. И это уже сделано для вас в некоторых случаях:

В Xcode 4 Interface Builder, когда вы перетаскиваете элемент на файл файла .h, он делает это 1-4 для вас и даже устанавливает для него нуль в viewDidUnload для вас.

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

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