在MyClass.m文件中:
@interface MyClass ()
{
NSMutableDictionary *myDict;
}
然后初始化:
- (id)init
{
self = [super init];
myDict = [NSMutableDictionary new];
NSLog(@"address1: %p", myDict);
return self;
}
然后是:
NSLog(@"address2: %p", myDict);
NSLog(@"crash: %@", myDict);
此代码在最后一条NSLog行上与EXC_BAD_ACCESS崩溃。这是输出:
address1: 0x6080000483a0
address2: 0x6080000483a8
因此init会被调用,并且只调用一次。但是对象myDict以某种方式在内存中的原始地址丢失了。然后当我尝试访问它时("崩溃:"输出行)我得到了EXC_BAD_ACCESS。
这里发生了什么?