2012-02-14 9 views
0
- (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]; ...viewDidLoadのEXC_BAD_ACCESS

誰か助けてくれますか? :)

編集:ビットは、私は自分のメソッドに配列のdefinitonを移動していること、見ることができるのは理解

を願っています。..コードを変更しました。また、taskTitleが(他のクラスの)nilでないことを確認するメソッドを追加しました。

+0

アナライザーを実行すると、かなりのメモリリークの問題が発生します。それらを最初に修正して、もう一度試してください。 –

+0

私はアナライザを実行しましたが、メモリリークはありません;) –

+0

例外がどこにあるかを確認するには、[super viewDidLoad]を入れてみてください。残りのコードは別々のtry/catchブロックに入れます。問題が親コードにある場合、このコードを見ているだけでは助けにならないとき。このコードに問題がある場合は、taskArrayとnewTask.taskTitleがnilでないことを確認してください。 – sch

答えて

4

は、最初の文のよう

[super viewDidLoad]; 

を入れてみてください。

+0

私はこれを数回試しました。同じ問題です。 –

1

newTask.taskTitleがNULLでないことを確認してください。

+0

私はこれを実装しましたが、これはエラー/例外を変更しません –

+0

何を実装しましたか? – Max

+0

if(newTask.taskOwner == nil || newTask.taskTitle == nil){ newTask.taskOwner = @ "Keine Angabe"; newTask.taskTitle = @ "Keine Angabe"; } newTask.taskTitleはこれ以上ゼロにすることはできません –

0

taskArrayはまだ有効なオブジェクトですか?それはどこに定義されていますか?多分オートリリースされたのでしょうか?

関数の先頭にブレークポイントを追加すると、すべてのオブジェクトが有効になりますか? (デバッグコンソールで「po」(「po taskArray」など)を確認できます。

+0

私はオフィスでコンピュータの前にいるときに、金曜日に試してみます:) –

+0

すべてのオブジェクトは有効ですが、アプリケーションがクラッシュします。 .. –

+0

私のコードを少し変更しました。コードを理解するのに便利です –