1

Мне было интересно использовать что-то в строках следующего кода для , чтобы автоматизировать строительство моих объектов (так как их много со множеством свойств):Идентификация свойств в файле заголовка по сравнению с файлом реализации

MyObject *myObject = [[myObject alloc] init]; 

unsigned int numberOfProperties = 0; 
objc_property_t *propertyArray = class_copyPropertyList([MyObject class], &numberOfProperties); 

for (NSUInteger i = 0; i < numberOfProperties; i++) 
{ 
    objc_property_t property = propertyArray[i]; 

    NSString *propertyName = [NSString stringWithUTF8String:property_getName(property)]; 

    if (propertyName) 
    { 
     id valueForProperty = [myObject valueForKey:propertyName]; 
     [myObject setValue:valueForProperty forKey:propertyName]; 
    } 

} 
free(propertyArray); 

Однако то, что я заметил, что этот код будет пытаться запустить не только от свойств в моем файле заголовка, но и все мои особенности реализации, а также, что я не хочу.

Поскольку Objective-C фактически не отличает общедоступные и частные свойства, я не уверен, как это сделать. Любые мысли о том, как указать, что меня интересуют только свойства в файле заголовка, чтобы эффективно имитировать одно и то же?

+0

Не делайте этого, ясность побеждает умнее. – zaph

+1

Этот код на самом деле ничего не делает. Если вы хотите объяснить, что вы на самом деле пытаетесь сделать, мы можем предложить реалистичный способ сделать это. – Chuck

ответ

1

Короче говоря, вы этого не сделаете. Эта информация недоступна в скомпилированной программе. Вам нужно будет написать собственный препроцессор, чтобы сделать это, если вы действительно этого хотели.

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

  • Нет связанных вопросов^_^