Создать переменную во время выполнения в Objective-C - PullRequest
2 голосов
/ 30 января 2010

В настоящее время у меня есть цикл, который перебирает NSArray объектов NSString. Я хотел бы, чтобы переменная NSString создавалась на каждой итерации цикла, используя в качестве имени переменной строковое значение текущего объекта NSString (из NSArray). Это, вероятно, лучше всего объяснить на примере:

for (i = 0; i < [arrayOfStrings count]; i++) {

    // NSString *<name of variable is [arrayOfStrings objectAtIndex:i]> = [[NSString alloc] init];

}

Есть ли способ выполнить эту задачу? Я использую iPhone SDK 3.1. Спасибо.

Ответы [ 4 ]

1 голос
/ 30 января 2010

То, что вы просите, не имеет смысла. Имена переменных не существуют во время выполнения. Они компилируются в смещения, и имя переменной теряется (если мы говорим о локальных переменных метода. Среда выполнения сохраняет имена переменных экземпляра).

Я думаю, что настоящие вопросы: «Зачем вам это нужно? Чего вы пытаетесь достичь?»

1 голос
/ 30 января 2010

Возможно, вам придется взглянуть на поддержку библиотеки времени выполнения Objective-C. Существует ряд функций, которые позволяют добавлять переменные, методы или изменять реализации методов во время выполнения. Например, в вашем случае функция class_addIvar может работать для вас:

Добавляет новую переменную экземпляра в класс.

BOOL class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types)
1 голос
/ 30 января 2010

Не совсем, но вы можете использовать NSMutableDictionary для добавления пар ключ / значение во время выполнения, где ключ - это имя из массива строк. Смотри http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/Reference/Reference.html.

0 голосов
/ 30 января 2010

Если переменные не существуют до времени выполнения, тогда что бы их использовать?

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