#import <Foundation/Foundation.h>
typedef struct Node {
int offset;
} Node;
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSMutableArray *array = [[NSMutableArray alloc] init];
Node node = {111111};
NSValue *value = [NSValue value:&node withObjCType:@encode(Node)];
[array addObject:value];
NSValue *structValue = [array objectAtIndex:0];
Node *n = (Node *)[structValue pointerValue];
printf("offset: %d", n->offset);
}
return 0;
}
この行でコードがクラッシュします:printf("offset: %d", n->offset);
ですが、なぜですか?なぜこの単純なコードがEXC_BAD_ACCESSを引き起こすのですか?
printf行の前に 'n'の内容を調べるとどうなりますか? –
'n> offset'にアクセスできませんでしたが、' printf( "%d"、n) 'は' 111111'を出力します。しかし、 'Node'構造体に別のフィールドを追加すると、' printf( "%d"、n) 'は最初のフィールドの値だけを出力します。 – neevek