1)如果Ivar是一个对象,object_getIvar(id对象,Ivar ivar)返回一个'id'。如果变量是一个NSString,可能是包含该值的id = NSString。那是对的吗?或者我需要做什么才能访问Ivar的值。
2)如果Ivar是一个float / int等什么会返回什么,我怎么把它转换成我可以使用的东西(一个浮点数或int是好的,因为我可以使用NSNumber numberWithXXX将它转换为一个对象)
答案 0 :(得分:1)
1)正确。正如docs所述:
返回值
由ivar指定的实例变量的值,如果object为nil,则为nil。
2)无论Ivar的类型如何,您都将获得Ivar所持有的价值。您可以使用ivar_getTypeEncoding确定Ivar的类型。有一个列表中的各种类型编码here。
掌握了这些信息,您应该能够编写一个适当处理每个案例的开关; e.g:
(警告:未经测试的代码)
const char* typeEncoding = ivar_getTypeEncoding(var);
switch (typeEncoding) {
case '@': {
// handle class case
} break;
case 'i': {
// handle int case
} break;
case 'f': {
// handle float case
} break;
// .. and so on
}
答案 1 :(得分:1)
用于打印任意对象描述的示例:
wx.Dialog