Objective-C nesne özellikleri bir listesini almak
Nasıl bir liste (NSArray NSDictionary şeklinde) Objective-C, belirli bir nesne öznitelikleri alabilir miyim?
Aşağıdaki senaryoyu düşünün: sadece NSString BOOL NSData bir nesne öznitelikleri gibi. bir tutan NSObject, genişleten bir üst sınıf tanımlıyorum Sonra bu üst sınıf uzanan çeşitli sınıflar, farklı özellikleri bir sürü her ekleme var.
Üzerinde bir örnek yöntemi uygulamak için hiç bir yol yokturüstbütün nesne ve döner, diyelim ki, (çocuk) sınıf her NSArray Bir geçer sınıf NSStrings olarak bağlıyordeğildaha sonra EP NSString Bu ben üst sınıf?
CEVAP
Ben sadece cevabını ben de almayı başardı. N-C çalışma Zamanı Kitaplığı'nı kullanarak, özelliklerini girmek istediğimi yolu vardı:
- (void)myMethod {
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([self class], &outCount);
for(i = 0; i < outCount; i ) {
objc_property_t property = properties[i];
const char *propName = property_getName(property);
if(propName) {
const char *propType = getPropertyType(property);
NSString *propertyName = [NSString stringWithCString:propName
encoding:[NSString defaultCStringEncoding]];
NSString *propertyType = [NSString stringWithCString:propType
encoding:[NSString defaultCStringEncoding]];
...
}
}
free(properties);
}
Bu bana bir 'getPropertyType' C Elma kod örneği alınır hangi işlevi, (şu an hatırlayamıyorum tam kaynak): . yapmak gerekli
static const char *getPropertyType(objc_property_t property) {
const char *attributes = property_getAttributes(property);
char buffer[1 strlen(attributes)];
strcpy(buffer, attributes);
char *state = buffer, *attribute;
while ((attribute = strsep(&state, ",")) != NULL) {
if (attribute[0] == 'T') {
return (const char *)[[NSData dataWithBytes:(attribute 3) length:strlen(attribute) - 4] bytes];
}
}
return "@";
}

Nasıl bir sınıf özellikleri listesini ...
Nasıl tüm özellikleri Javascript bir N...
Nasıl nesne tam listesi'In yöntem...
Nasıl Vim içinde yüklü tüm renk şemala...
Bir java damping nesne'un özellik...