2010-01-30 6 views
2

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

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

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

} 

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

+1

no. но почему вы хотите это сделать? – echo

+0

Спасибо всем за ваш ответ. Вариант использования для этого сценария был тем, что предложил неизвестный (google) пользователь, где мне нужно было создать класс по требованию. Тем не менее, я понял, что через некоторое время это был довольно плохой дизайн и реструктурировал приложение, чтобы он больше не нуждался в такой функциональности. Спасибо всем за ваши предложения! – Skoota

ответ

0

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

+0

Я думаю, что для этого есть несколько полезных случаев. Один непосредственный случай, который приходит мне на ум, - это ситуация, когда необходимо создать класс по требованию и создать экземпляр на основе необходимых полей и методов. Но, возможно, у человека, спрашивающего здесь, есть другой вариант использования – user200654

1

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

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

BOOL class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types) 
1

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

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

Смежные вопросы