0
我有以下方法。@encode for type id其中id实际上是任何对象
- (void)someObject:(id)obj {
char* encoding = @encoding(typeof(obj));
NSString *s = [NSString stringWithCString:encoding encoding:NSUTF8StringEncoding];
NSLog(s);
}
这个方法总是返回@"@"
我是否通过NSNumber, NSArray, NSDictionary or NSString
类型的变量中的obj。我假设它正在检查obj
指针类型。
我必须这样做才能返回已传递的变量的实际类型编码?
“变量的类型编码”是什么意思?你在期待什么? – Merlevede
问题是,解引用一个'id'不透明类型是不合理的(所以@encode响应是正确的,因为'id'是一个对象,意思是'@')......出于好奇,你是什么试图完成这个? – HepaKKes
@HepaKKes:我试图从字典中将这些值赋给一个类的ivars。我有一个Ivars列表(使用class_copyIvarList()),我已经得到了伊娃类型(使用ivar_getTypeEncoding()),现在我想确保伊娃正在填充兼容值。 (例如NSArray伊娃应该填充NSArray)。我可以做if/else检查使用isKindOfClass,但我在想是否有另一种方式,我只是比较伊娃的类型编码和传入的参数。 –