iphone - Objective-C内存管理问题,NSMutableArray

标签 iphone objective-c ios memory-management

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

NSMutableArray *contacts;

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

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

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

因此,现在我的联系人 已初始化。在我的 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/

相关文章:

iphone - 是否有关于如何在 OpenGL ES 1.1 中使用顶点缓冲区对象 (VBO) 的最小化示例?

iOS 大整数 NSNumberFormatter 不工作

iphone - iOS——如果 autocorrectionType 为 UITextAutoCorrectionTypeNo,UITextView 仍将句点放在双倍空格之前

iphone - 字节数组到 UIImage Objective-C

iphone - 是否需要 ARC 中的 NSNotificationCenter removeObserver?

objective-c - 保留实例化对象的类级数组,而不必显式删除它们

objective-c - sizeWithFont 方法已弃用。 boundingRectWithSize 返回一个意外的值

ios - 在 UIImageView IOS 上画圆的最佳方法

ios - 我如何知道 Objective-C 代码是否正在 iOS 模拟器中运行?

ios - NSMutableArray 中的 BOOL 给出了错误的答案