Frage : Gedächtnis-Leck Poping im modalen Ansicht-Steuerpult

Im Steuerpult genanntes controller1, drücke ich ein modales Ansicht controller
1:
2:
3:
4:
5:
6:
7:
8:
 AddConversationViewController *addController = [[AddConversationViewController alloc] 
	 initWithNibName: @ " AddConversationViewController " Bündel: Null];
	 //addController.delegate = Selbst;	 
	 UINavigationController *navigationController = [[UINavigationController alloc]
	 initWithRootViewController: addController];
	 [SelbstpresentModalViewController: navigationController belebt: JA];
	 [addController Freigabe];
	 [navigationController Freigabe];


and dann in diesem addcontroller, habe ich mehrere Gegenstand zugeteilt.  aber in der dealloc Methode, wenn ich jene Gegenstände freigebe, erhalte ich BAD_ACCESS Warnung, wenn ich den modalen Ansichtsteuerpult entlasse. Wenn ich nicht jene Gegenstände freigebe, die ich zugeteilt habe, gibt er nicht die BAD_ACCESS warning.
those Gegenstände ich zugeteilt habe, bevor nicht freigegeben werden noch, können retained.

Does jemand dieses Gedächtnisleck reparieren?

Antwort : Gedächtnis-Leck Poping im modalen Ansicht-Steuerpult

Die BAD_ACCESS Störung bedeutet, dass Sie einen Gegenstand freigeben, dass eine andere Funktion z.Z. verwendet.  Ihren Code so laufen lassen:

       AddConversationViewController *addController = [[AddConversationViewController alloc]
       initWithNibName: @ " AddConversationViewController " Bündel: Null];
       //addController.delegate = Selbst;       
       UINavigationController *navigationController = [[UINavigationController alloc]
       initWithRootViewController: addController];
       [SelbstpresentModalViewController: navigationController belebte: JA];
       [addController Freigabe];
                      NSLog (@ " nach dem addController freigegeben ");
       [navigationController Freigabe];
                      NSLog (@ " nach dem navigationController freigegeben ");

Dieses addiert einige Konsolnachrichten, bevor Sie jeden Ihrer Gegenstände freigeben.  Wenn Sie sehen, nachdem addController in Ihrer Konsole freigab, wissen Sie dass [addController Freigabe]; verursacht nicht Ihren Abbruch.  Wenn Sie beide jener Konsolnachrichten sehen, wissen Sie, dass keine jener Aussagen einen Abbruch verursachen, aber höchstwahrscheinlich, verursacht eine jener 2 Freigabeaussagen den Abbruch.  Ich denke dass [navigationController Freigabe]; Aussage verursacht Ihren Abbruch, weil Sie das benötigen, Ansichten über Ihr navigationController zu verschieben.  Wenn Sie diese Linie entfernen, sollten Sie nicht zusammenstoßen.  Das Entfernen von addController sollte einen Abbruch nicht verursachen, weil Sie gerade das die Ansicht verschieben ließen und sie nicht noch etwas tut.  Wenn Sie irgendwelche weiteren Fragen haben, frei bitte fühlen, mich nach ihnen zu fragen.
Weitere Lösungen  
 
programming4us programming4us