次のパックされた構造体が与えられます:
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))
問題なく動作します。クラッシュせずに構造体のデータを取得する可能性はありますか?それはAppleのバグですか?
PS。実行時に行う必要があります。つまり、.foo
直接呼び出すことはできません@"foo"
。実行時に文字列しかありません。(私が実際に達成しようとしているのは、オブジェクトの内容を再帰的に印刷することです)。