我有以下方法。
- (void)someObject:(id)obj {
char* encoding = @encoding(typeof(obj));
NSString *s = [NSString stringWithCString:encoding encoding:NSUTF8StringEncoding];
NSLog(s);
}
此方法始终返回@"@"
是否在obj中传递NSNumber, NSArray, NSDictionary or NSString
类型的变量。我假设它正在检查obj
指针类型。
我该怎么做才能返回我传递的变量的实际类型编码?
答案 0 :(得分:2)
@encode()
是一个编译时构造;它只知道变量的类型,而不是运行时将包含在对象中的对象的类。任何对象类型的变量都将编码为@
。
您必须使用运行时检查,询问对象的类,以实现目标。