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

總之,你沒有。該信息在編譯的程序中不可用。如果你真的想這樣做,你需要編寫一個自定義的預處理程序來執行此操作。