为什么在Objective-C中的实例变量上获得EXC_BAD_ACCESS?

时间:2016-10-19 13:48:09

标签: objective-c cocoa memory-management

在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。

这里发生了什么?

0 个答案:

没有答案