有没有快速的方法在Objective-C中使用某种typeof()等价物?在Javascript中我可以输入:
var a = "imastring";
console.log(typeof(a));
// --> "string"
我想在Objective-C中使用一些不是编译器指令的东西。
答案 0 :(得分:6)
是的,您可以使用[object class]方法:
NSArray *a = @[@"a", @"b"];
NSLog(@"NSArray = %@", [a class]);
// NSArray = __NSArrayI
NSMutableArray *b = [[NSMutableArray alloc] initWithArray:a];
NSLog(@"NSMutableArray = %@", [b class]);
// NSMutableArray = __NSArrayM
NSString *c = @"imastring";
NSLog(@"NSString = %@", [c class]);
// NSString = __NSCFConstantString
NSNumber *d = [[NSNumber alloc] initWithInteger:5];
NSLog(@"NSNumber = %@", [d class]);
// NSNumber = __NSCFNumber
请注意,以这种方式检查的大多数对象上都会看到 __ NSCF 或 __ NS 前缀。例如,在记录NSString的类类型时,您可能会看到 __ NSCFString 或 __ NSCFConstantString (它们都是NSString类型)作为结果。当我好奇地看到幕后的情况时,我才会使用这种方法,但我不倾向于在生产中使用这种类型的检查。
您可以使用isKindOfClass方法来测试对象是否属于某种类型。
答案 1 :(得分:1)
您可以使用class
的{{1}}方法。