【发布时间】:2013-01-24 10:25:35
【问题描述】:
给定以下打包结构:
typedef struct __attribute__((packed)) {
BOOL flag;
int x;
} Foo;
还有以下类:
@interface Obj : NSObject
@property (nonatomic) Foo foo;
@end
@implementation Obj
@end
尝试在具有打包结构类型的属性上调用 valueForKey::
Obj *obj = [Obj new];
id boo = [obj valueForKey:@"foo"];
导致valueForKey: 内部崩溃(实际上它不是在valueForKey: 内部崩溃,而是在随机位置取决于月球大小,我猜是内存损坏)。
如果我删除 __attribute__((packed)) 它工作正常。
有没有可能在不崩溃的情况下获取结构的数据?是苹果的bug吗?
PS。我确实需要在运行时这样做,即我不能直接调用.foo,我在运行时只有@"foo" 字符串。 (我实际上想要实现的是递归打印对象内容)。
【问题讨论】:
-
"是苹果的bug吗?"这听起来很有可能。
标签: ios objective-c struct