Почему происходит сбой приложения в симуляторе iPhone; Как я могу это исправить? - PullRequest
0 голосов
/ 08 ноября 2010

Я работаю над приложением, которое использует контроллер навигации. Когда я строю, я не получаю ошибок или предупреждений. Я определил метод myMethod в FirstViewController.m файле, затем в viewDidLoad я вызываю метод с [self myMethod];.

Когда я строил и запускал с консоли, я ничего не получил. Поэтому я выложил NSLog() утверждений примерно так:

-(void) viewDidLoad {
NSLog(@"Entering viewDidLoad");
[self myMethod];
NSLog(@"Called myMethod");
[super viewDidLoad];
}

Консоль никогда не возвращает второй оператор NSLog, что наводит меня на мысль, что приложение вызывает сбой при вызове метода.

Я пробовал это с симулятором, установленным на iOS 4.0.1, а также iOS 4.1. Я строю против iOS 4.1 SDK. Я очень ценю любую помощь, которую вы можете предложить.

Обновление: Я запустил отладчик, который, кажется, показывает, что проблема в myMethod. Я делаю это только через несколько строк кода в этом методе, прежде чем я получу «EXC_BAD_ACCESS». Строки кода:

-(void)myMethod {
NSMutableArray *someStuff;
NSMutableArray *someMoreStuff;

stuffSections=[[NSMutableArray alloc] initWithObjects:@"Some Stuff",@"Some More Stuff",nil];

someStuff=[[NSMutableArray alloc] init];
someMoreStuff=[[NSMutableArray alloc] init];

[someStuff addObject:[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Item Name",@"name",@"Item Picture.png",@"picture",@"http://theurl.net/",@"url",@"1",@"itemCode",nil]];

Но, похоже, я не могу пройти мимо этой первой попытки добавить что-либо в массив someStuff.

Ответы [ 3 ]

0 голосов
/ 08 ноября 2010

Вы пропускаете alloc при инициализации someStuff и someMoreStuff. Должно быть

   someStuff = [[NSMutableArray alloc] init];
   someMoreStuff = [[NSMutableArray alloc] init];
0 голосов
/ 28 февраля 2013

Вы проверяли два MutableArrays? Распределены ли они успешно? Вы получаете « EXC_BAD_ACCESS », когда приложение перешло в поврежденное состояние, которое обычно происходит из-за проблемы управления памятью . Я думаю, что массивы не выделены.

Попробуйте выделить это так.

NSMutableArray * someStuff = [[NSMutableArray alloc]initWithCapacity:3];
NSMutableArray * someMoreStuff = [[NSMutableArray alloc]initWithCapacity:3];

добавить точку останова, проверить в области отладки и подтвердить, были ли они распределены успешно. Если для каждого из этих массивов есть память, то они выделяются.

0 голосов
/ 08 ноября 2010

Похоже, проблема в "myMethod". Если бы мне пришлось угадывать, я бы сказал, что вы пытаетесь сослаться на объект, который был автоматически освобожден и не был сохранен.

...