Краткие атрибуты - PullRequest
       1

Краткие атрибуты

0 голосов
/ 20 апреля 2011

Полагаю, ответом будет «нет», но я хочу убедиться. Есть ли удобный способ иметь много атрибутов объекта в Objective C? Если я использую свойства, мне нужно написать четыре строки, чтобы иметь только один атрибут:

Foo.h:

@interface Foo : NSObject {
    NSString *str; // first line
}
@property (copy) NSString *str; // second line

Foo.m:

@implementation Foo
@synthesize str; // third line

(void) dealloc {
    [str release]; // fourth line
    ...
}

С другой стороны, без свойств каждый раз, когда я устанавливаю str, мне нужно освобождать предыдущее, и все еще нужно освобождать и на dealloc. Есть ли более удобный способ или, возможно, ярлык XCode4 для объявления свойств?

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Если вы хотите использовать сторонние скрипты / сервисы, Дэвид Хёрл недавно опубликовал скрипт, который помогает управлять переменными экземпляра и объявленными свойствами.

С его объявление :

Объявление версии 1.0 скрипта PropertyMaster Xcode (и службы Automator), чтобы помочь разработчикам iOS (и, в меньшей степени, Какао) преобразовать существующий код на основе ивара во все свойства и поддерживать свойство / viewDidAlloc /отношения dealloc.

После установки в качестве сценария Xcode 3 (или в качестве службы для Xcode 4) вы можете выбрать файлы интерфейса, содержащие как ivar, так и свойства, и преобразовать любые ivars в свойства, что позволит впоследствии удалить всеИвар.Он вставляет один большой текстовый объект в буфер обмена, вы можете вставить его обратно как в интерфейс, так и в файл реализации, а также упорядоченные и классифицированные строки синтеза, методы viewDidUnload и dealloc.Он также позволяет выбирать и обрабатывать расширение класса, содержащее свойства, и генерирует объединенный большой двоичный объект.

Кроме того, он имеет настраиваемую систему для определения слабых иваров и создания окончательных операторов «close» передrelease (то есть foo.delegate = nil, [foo release];)

Если URL-адрес в объявлении не работает, попробуйте этот .

1 голос
/ 20 апреля 2011

Вы можете сохранить «первую строку», то есть определение переменной (но тогда вам придется изменить «четвертую строку» на self.str = nil;). Objective-C поддерживает создание неявной переменной по требованию для вашего свойства, но эта функция доступна не на всех платформах: она доступна для iOS и Mac 64-битная, но не для Mac 32-битная.

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