有没有一种快速的方法在Objective-C中使用某种类型的typeof()?在Javascript中我可以输入:
var a = "imastring";
console.log(typeof(a));
// --> "string"
Run Code Online (Sandbox Code Playgroud)
我想在Objective-C中清理一些不是编译器指令的东西.
是的,您可以使用[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
Run Code Online (Sandbox Code Playgroud)
请记住,在以这种方式检查的大多数对象上看到__NSCF或__NS前缀是很常见的.例如,在记录NSString的类类型时,您可能会看到__NSCFString或__NSCFConstantString(它们都是NSString类型)作为结果.当我好奇地看到幕后的情况时,我只会使用这种方法,但我不倾向于在生产中使用这种类型的检查.
您可以查看使用isKindOfClass方法来测试对象是否是某种类型.
| 归档时间: |
|
| 查看次数: |
3404 次 |
| 最近记录: |