Как создать макрос для создания объекта в Objective-C / ANSI C - PullRequest
2 голосов
/ 16 июля 2009

Я надеюсь, что правильно формулирую свой вопрос, но то, что я пытаюсь сделать, на самом деле довольно тривиально.

У меня есть набор кода со статическим созданием объекта, который выглядит следующим образом:

Foo *aFoo1 = [[[Foo alloc] init] autorelease];
[anArray addObject:aFoo1];
Foo *aFoo2 = [[[Foo alloc] init] autorelease];
[anArray addObject:aFoo2];

Я просто хочу переместить все эти экземпляры + совокупность anArray в отдельный файл заголовка и просто включить файл заголовка там, где это необходимо, без необходимости создания нового класса для управления этими экземплярами. Я просто хочу включить заголовочный файл и получить доступ к anArray, как только он завершит добавление всех вышеперечисленных объектов и заполнит его где-нибудь еще. Можно ли как-нибудь превратить вышесказанное в макрос? В идеале я скоро все это сделаю в базе данных, сделаю запрос к базе данных и создам экземпляр набора результатов. В любом случае, мне любопытно, что ответ на этот вопрос в том формате, в котором он сейчас написан.

Ответы [ 3 ]

3 голосов
/ 16 июля 2009

Вы можете использовать следующее:

#define CREATE_INSTANCE_AND_ADD_TO_ARRAY(TYPE, NAME, ARRAY) \
        TYPE * NAME = [[[TYPE alloc] init] autorelease];    \
        [ARRAY addObject:NAME]

Вызывается так:

CREATE_INSTANCE_AND_ADD_TO_ARRAY(Foo, aFoo1, anArray);
CREATE_INSTANCE_AND_ADD_TO_ARRAY(Foo, aFoo2, anArray);
...
2 голосов
/ 16 июля 2009

Моя мысль - поставить установку в функцию C. Возможно, вы захотите использовать два файла:

//  Extra.h
// new file with descriptive header
NSArray* setupMyArray( ... );

-

//
// Extra.m
NSArray* setupMyArray( ... )
{
    NSMutableArray * anArray = [NSMutableArray arrayWithCapacity:0];
    // code to build array...
    //...
    return anArray;
}

Хотя я верю, что вы попадете сюда на отрывочную территорию. В Objective-C вы используете объектно-ориентированный язык. С С ты не. Похоже, вы хотите построить свои объекты в C, а затем использовать их в своем классе.

0 голосов
/ 16 июля 2009

Проверьте текстовые макросы в XCode под Edit> Text Macros> Objective-C.

(Вы даже можете назначить им сочетания клавиш в настройках XCode)

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