EXC_BAD_ACCESS в viewDidLoad - PullRequest
       7

EXC_BAD_ACCESS в viewDidLoad

0 голосов
/ 14 февраля 2012
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    @try {
        if ([segue.identifier isEqualToString:@"taskListSegue"])
        {   
            MindMapInformationViewController_iPhone *taskListContentController = [segue destinationViewController];  
            int selectedIndexPath = [[self.tableView indexPathForSelectedRow] row];

            MindMap *newMindMap;
            newMindMap = [mindmaps objectAtIndex:selectedIndexPath];        
            FileManager *fileManager = [[[FileManager alloc] init] autorelease];
            [fileManager readFile:newMindMap.pathToMindmapAtDevice parsing:YES];

            NSMutableArray *taskArray = [fileManager getArray];
            [taskListContentController setTasksOfSelectedMindmap:taskArray];
        }
    }
    @catch (NSException *exception) {

    }
}

-(void)setTasksOfSelectedMindmap:(NSMutableArray *)tasks {
    @try {
        [self initComponents];
        if (tasks != nil) {
            taskArray = tasks;
        }
    }
    @catch (NSException *exception) {

    }

}

-(void)initComponents {
    @try {
        taskArray = [[NSMutableArray  alloc] init];

        taskName = [[NSMutableArray alloc] init];
        taskOwner = [[NSMutableArray alloc] init];
    }
    @catch (NSException *exception) {

    }
}

-(void)viewDidLoad
{
    @try {
        [super viewDidLoad];
        int i = 0;
        for (MindMapTask *newTask in taskArray) {
            if (newTask.taskOwner == nil) {
                newTask.taskOwner = @"Keine Angabe";
            }
            [taskName addObject:newTask.taskTitle];
            [taskOwner addObject:newTask.taskOwner];

            i++;
        }

    }
    @catch (NSException *exception) {
        NSLog(@"Exception - %@", exception);
    }
}

Почему я получаю EXC_BAD_ACCESS?Производитель этого исключения, кажется, [super viewDidLoad]; ...

Кто-нибудь может мне помочь?:)

РЕДАКТИРОВАТЬ: немного изменил код .. надеюсь, что это понятно

Вы можете видеть, что я переместил определение массивов в собственный метод.Я также добавил метод, чтобы убедиться, что taskTitle не равен nil (в другом классе).

Ответы [ 3 ]

4 голосов
/ 14 февраля 2012

Попробуйте поставить

[super viewDidLoad];

Как первое утверждение.

1 голос
/ 14 февраля 2012

Убедитесь, что newTask.taskTitle не равно NULL.

0 голосов
/ 15 февраля 2012

TaskArray все еще является действительным объектом? Где это определено? Может быть, это было автоматически выпущено?

Когда вы добавляете точку останова в начале функции, все ли объекты действительны? (Вы можете проверить это в консоли отладки с помощью «po», например, «po taskArray»)

...