Есть ли более быстрый способ делать @property, @synthesize и выпускать переменную класса?
Я знаю, что @synthesize
уже сократил мою работу по написанию геттеров и сеттеров. Но одной общей процедурой, которую я часто должен использовать, являются эти 4 шага, например
-
SomeView *abc;
-
@property(nonatomic,retain)SomeView *abc;
-
@synthesize abc;
-
[abc release];
Кто-нибудь придумал какую-нибудь идею, где я пишу SomeView *abc
; в .h
и шаги 2,3,4 генерируются автоматически?
Ответы
Ответ 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, которые вам не нужно делать, и тот, который они работают над удалением. Так что еще не все - но становится все легче.