objective-c – ARC中的object_getInstanceVariable / object_se
发布时间:2020-12-16 09:50:01 所属栏目:百科 来源:网络整理
导读:为什么Objective-C运行时方法object_getInstanceVariable和object_setInstanceVariable在自动引用计数下不可用,我该怎么办? 当实例变量的大小大于开发目标的指针大小时,object_getInstanceVariable是错误的.我怎么能绕过这个? 解决方法 请改用valueForKey
为什么Objective-C运行时方法object_getInstanceVariable和object_setInstanceVariable在自动引用计数下不可用,我该怎么办?
当实例变量的大小大于开发目标的指针大小时,object_getInstanceVariable是错误的.我怎么能绕过这个? 解决方法
请改用valueForKey:和setValue:forKey:方法.这些允许您读/写对象的任何实例变量.对于原始类型的实例变量,这些方法返回/获取包含为NSNumber或NSValue对象的值.
你的实例变量大于指针大小,也许是struct的?下面是一些显示与struct一起使用的代码片段,首先让我们定义一个struct: typedef struct { int i; float f; char c; } ThreePrimitives; 和一个带有(私有)实例变量的类: @interface StructClass : NSObject ... @end @implementation StructClass { ThreePrimitives myStruct; } ... @end 要设置实例变量: ThreePrimitives a = { 42,3.14,'x' }; NSValue *wrapA = [NSValue value:&a withObjCType:@encode(ThreePrimitives)]; [sc setValue:wrapA forKey:@"myStruct"]; 要读取实例变量: ThreePrimitives b; NSValue *extracted = [sc valueForKey:@"myStruct"]; [extracted getValue:&b]; HTH (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |