Вопрос управления памятью Objective-C, NSMutableArray - PullRequest
0 голосов
/ 10 июня 2011

У меня есть 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 не хранятся объекты, которые я инициализировал в начале, и как мне это исправить?

EDIT: Ошибка возникает, когда я выбираю NavigationBarItem, который затем вызывает метод buttonWasPressed. В этом методе у меня просто есть следующее:

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

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

И я вижу напечатанное «кнопка была нажата», но затем появляется EXEC_BAD_ACCESS.

1 Ответ

2 голосов
/ 10 июня 2011

Этот код выглядит хорошо, ничего страшного. Я предполагаю, что вы переиздание в другом месте. Включите зомби - добавьте NSZombieEnabled к YES в аргументах исполняемого файла, и он будет разбит на строку, чтобы вы могли видеть, какой объект перевыпускается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...