2010-11-29 4 views
1

Ich baue eine Anwendung und jedes Tab-Bar-Element enthält 4 oder manchmal 5 verschachtelte Navigation .. ich versuche, alles zu tun, aber pushViewController Ursache ein Speicherzuweisung Problem in Instrumenten und ich weiß nicht, was kann ich tun ,, der CodepushViewController Speicherzuweisung Problem

[self.navigationController pushViewController:table animated:YES]; 
[table release]; 
table=nil; 

ich versuche, den Referenzzähler zu drucken, und ich wurde

der Referenzzähler vor Push schockiert ist = 1 und nach Push ist = 4

WARUM ?? kann mir bitte jemand helfen ??


der Code war ich die Tabelle

custemTable *table=[[custemTable alloc] initWithNibName:@"custemTable" bundle:nil ]; 
NSString selectedCellText=((custemCell)[tableView cellForRowAtIndexPath:indexPath]).THNameLabel.text; 
cll=(custemCell)[tableView cellForRowAtIndexPath:indexPath]; 
cll.backgroundLabel.backgroundColor=[UIColor ]; 
[backgroundSelectedCell release]; 
backgroundSelectedCell=nil; 
table.showingTill=selectedCellText; 
[email protected]"..."; 
selectedCellText=nil; 
[self.navigationController pushViewController:table animated:YES]; 
[table release]; 
table=nil; 

das eigentliche Problem, dass, wenn die Anwendung sein, die Speicherzuweisung 1.56 beginnt zu initiieren verwenden M und wenn ich jede Zelle auswählen und die Pushviewcontroller die Speicher arbeiten becaome 2.8 M und wenn ich den Speicher zurückhalte, bleibe auf Bereich von 2.8 M (ungefähr 2.7 oder 2.6 manchmal) zu wissen..there sind kein Speicherleck und ich war relase alles, das ich zitiere oder behalte oder kopiere und ich nicht was kann ich machen !!!

Antwort

1

Ich würde sagen, da ist noch etwas in dir App, die diese Erinnerung verliert.

Können Sie mehr von Ihrem Code einfügen, einschließlich, wie Sie instanziieren * Tabelle?

Sie sollten sich auch nicht auf die Werte retainCount verlassen, um festzustellen, ob ein Objekt leckt oder nicht. Das System behält auch Objekte, die es benötigt, und gibt es frei, wenn sie nicht mehr benötigt werden, und Ihr retainCount wird immer davon betroffen sein.

Wenn Sie ein Objekt zuweisen, behalten oder kopieren, liegt es in der Regel in Ihrer Verantwortung, es freizugeben. Alles andere wird vom System behandelt und mit dem Auto Release Pool geleert.

+1

Könnte besser sein, Ihre Frage mit dem Code – Rog

+0

zu bearbeiten Lieber Rod ..der Code wurde verwendet, um die Tabelle zu initiieren ist custemTable * Tabelle = [[custemTable alloc]; initWithNibName: @ "custemTable" Bündel: nil]; NSString selectedCellText = ((custemCell) [Tabellenansicht cellForRowAtIndexPath: indexPath]). THNameLabel.text; cell = (custemCell) [Tabellenansicht cellForRowAtIndexPath: indexPath]; cll.backgroundLabel.backgroundColor = [UIColor]; [backgroundSelectedCell release]; backgroundSelectedCell = null; table.showingTill = selectedCellText; table.title = @ "..."; selectedCellText = null; [self.navigationController pushViewController: Tabelle animiert: YES]; [Tabellenfreigabe]; [Tabelle = Null; – Adel

+0

In diesem Code ist kein Speicherleck vorhanden. Es könnte sein, dass noch etwas anderen Speicher in Ihrer customTable-Instanz verloren geht. – Rog

0

Der Code wurde i verwendet die Tabelle

ist

custemTable * table = [[custemTable alloc] initWithNibName: @ "custemTable" Bundle: nil] zu initiieren; NSString selectedCellText = ((custemCell) [Tabellenansicht cellForRowAtIndexPath: indexPath]). THNameLabel.text; cell = (custemCell) [Tabellenansicht cellForRowAtIndexPath: indexPath]; cll.backgroundLabel.backgroundColor = [UIColor]; [backgroundSelectedCell release]; backgroundSelectedCell = null; table.showingTill = selectedCellText; table.title = @ "..."; selectedCellText = null; [self.navigationController pushViewController: Tabelle animiert: YES]; [Tabellenfreigabe]; Tabelle = Null;

das echte Problem, dass, wenn die Anwendung beginnt die Speicherzuweisung 1,56 M sein und wenn ich irgendeine Zelle und den pushViewController den Speicher becaome 2,8 M und wenn ich den Speicher zurückhaltend auf Bereich von 2,8 M (etwa 2,7 oder 2.6 manchmal) zu wissen .. es gibt kein Speicherleck und ich war relase alles, das ich zitiere oder behalte oder kopiere und ich nicht was kann ich tun !!!

+0

Lassen Sie das System die Ansichten entlasten und den Speicher freigeben, wenn es benötigt wird. Solange Sie mit den Methoden -dealloc und -viewDidUnload das Richtige tun, wird diese Ansicht aufgehoben und der Speicher freigegeben. – Rog

+0

ya ya Rog .. ich tat alles, um Komponenten und IBOutlets in -dealoc Methode zu lösen und ich behauptete, dass er dort eingeben..aber ich nicht jetzt, warum dort immer noch das gleiche Problem. !! – Adel