我有一个UIViewController。在UIViewController的顶部,我已经声明

NSMutableArray *contacts;


在我的viewDidLoad方法中,我调用[self getContacts],这基本上初始化了contacts数组。首先初始化数组,然后添加一些对象:

if(contacts == nil)
   contacts = [[NSMutableArray alloc] init];

[contacts removeAllObjects];
[contacts addObjectsFromArray:[some objects]];


因此,现在我的contacts已初始化。在我的viewDidLoad方法中,我什至使用contacts,效果很好。稍后,在一种方法中,我需要检索contacts的元素,但是我得到了EXC_BAD_ACCESS。为什么是这样?为什么我的contacts数组一开始就没有保留初始化它的对象,我该如何解决?

编辑:
当我选择一个NavigationBarItem然后触发方法buttonWasPressed时,就会出现错误。在这种方法中,我仅具有以下内容:

-(void)buttonWasPressed:(id)sender {
    NSLog(@"button was pressed");
    if(contacts == nil)
       NSLog(@"contacts is nil!");

    NSLog(@"contacts = %@",contacts);
}


而且我看到打印了“按下按钮”,但是然后有一个EXEC_BAD_ACCESS。

最佳答案

这段代码看起来都很不错,没有错。我想你在其他地方放过头了。打开Zombies-在可执行参数中将NSZombieEnabled添加到YES,它将在行上断开,因此您可以查看正在释放的对象。

关于iphone - Objective-C内存管理问题,NSMutableArray,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6307559/

10-12 03:29