处理object_getIvar(id object, Ivar ivar)的返回值
1) object_getIvar(id object, Ivar ivar) 如果 Ivar 是一个对象,则返回一个“id”,例如。 如果变量是 NSString,则可能包含该值的 id = NSString。 那是对的吗? 或者我需要做什么才能获取 Ivar 的价值。
2)如果 Ivar 是 float/int 等,将返回什么以及如何将其转换为我可以使用的东西(float 或 int 都可以,因为我可以使用 NSNumber numberWithXXX 将其转换为对象)。
1) object_getIvar(id object, Ivar ivar) returns an 'id' if the Ivar is an object eg. if the variabe is an NSString, presumably the id = NSString which contains the value. Is that correct? Or what do I need to do to access the value of the Ivar.
2) if the Ivar is a float/int etc. what will get returned and how do I convert it into something I can use (a float or int is fine as I can use NSNumber numberWithXXX to convert it to an object).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
1)正确。 正如所述文档:
2) 无论 Ivar 的类型如何,您都将始终获得 Ivar 所持有的值。 您可以使用 ivar_getTypeEncoding。 此处提供了各种类型编码的列表。
有了这些信息,您应该能够编写一个适当处理每种情况的开关; 例如:(
警告:前面未经测试的代码)
1) Correct. As stated by the docs:
2) No matter the type of the Ivar you will always get the value that the Ivar holds. You can determine the type of the Ivar by using ivar_getTypeEncoding. There's a list of the various type encodings here.
With that information at hand, you should be able to write a switch that handles each case appropriately; e.g.:
(warning: non-tested code ahead)
用于打印任意对象的描述的示例:
Example use for printing the description of arbitrary objects: