我需要能够区分 Objective c 内置类和应用程序特定类。我现在做出这个决定的方式是检查类名是否以“__”开头,这是一个可怕而骇人听闻的解决方案,但它确实有效。
所以我的问题是确定一个类是内置类还是应用程序特定类的正确方法是什么?
//a variable named object is defined already
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([object class], &outCount);
for (i = 0; i < outCount; i++)
{
objc_property_t property = properties[i];
NSString *propertyName = [NSString stringWithUTF8String:property_getName(property)];
id propertyValue = [object valueForKey:(NSString *)propertyName];
NSString *classString = NSStringFromClass([propertyValue class]);
if ((classString.length > 2 && [[classString substringToIndex:2] isEqual:@"__"]))
{
// Objective C Class (NSString, NSArray, NSDate, NSNumber)
}
else
{
// Not Objetive C Class
}
}