Moin,
ich bin gerade beim debuggen meines Projekts und kämpfe noch mit einem Memory-Leak den ich mir nicht erklären kann.
Ich habe eine Tabelle in der einzelnen Reihen verschiedene UITableViewCellStyles zuweise. Die Implementation sieht so aus:
Alles anzeigen
Beim Laden der Tabelle leckt noch nichts, erst wenn ich die Tabelle wiederholt schnell hoch und runter scrolle. Ich habe bewusst die Zelleninhalte auskommentiert, da ich dachte es ist irgendein Bild oder Ähnliches das das Speicherleck verursacht. Das lässt darauf schließen das es die einzelnen Zellen sind die das Problem verursachen. Da ich die Zellen ja aber in den Autorelease Pool packe dachte ich, dass ich auf der sicheren Seite bin.
Kann mir jemand sagen wo mein Fehler liegt?
Danke und Grüße, Marco
Im Anhang noch die restlichen Methoden für die Zellen:
Alles anzeigen
ich bin gerade beim debuggen meines Projekts und kämpfe noch mit einem Memory-Leak den ich mir nicht erklären kann.
Ich habe eine Tabelle in der einzelnen Reihen verschiedene UITableViewCellStyles zuweise. Die Implementation sieht so aus:
Quellcode
- -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- static NSString *cellIdentifier1 = @"cell1";
- static NSString *cellIdentifier2 = @"cell2";
- static NSString *cellIdentifier3 = @"cell3";
- static NSString *cellIdentifier4 = @"cell4";
- static NSString *cellIdentifier5 = @"cell5";
- static NSString *cellIdentifier6 = @"cell6";
- UITableViewCell *cell;
- if ([indexPath section] == 0.0) {
- if ([indexPath row] == 0.0 ) {
- cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier1];
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier1] autorelease];
- //Zelleninhalte...
- }else if ([indexPath row] == 1.0) {
- cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier2];
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier2] autorelease];
- //Zelleninhalte...
- }else if ([indexPath row] == 2.0) {
- cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier3];
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier3] autorelease];
- //Zelleninhalte...
- }else if([indexPath row] == 3.0){
- cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier4];
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier4] autorelease];
- //Zelleninhalte...
- }else if([indexPath row] == 4.0){
- cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier5];
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier5] autorelease];
- //Zelleninhalte...
- }else if([indexPath row] == 5.0){
- cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier6];
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier6] autorelease];
- //Zelleninhalte...
- }
- }
- return cell;
- }
Beim Laden der Tabelle leckt noch nichts, erst wenn ich die Tabelle wiederholt schnell hoch und runter scrolle. Ich habe bewusst die Zelleninhalte auskommentiert, da ich dachte es ist irgendein Bild oder Ähnliches das das Speicherleck verursacht. Das lässt darauf schließen das es die einzelnen Zellen sind die das Problem verursachen. Da ich die Zellen ja aber in den Autorelease Pool packe dachte ich, dass ich auf der sicheren Seite bin.
Kann mir jemand sagen wo mein Fehler liegt?
Danke und Grüße, Marco
Im Anhang noch die restlichen Methoden für die Zellen:
Quellcode
- -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- return 1.0;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- int secCount;
- if (section == 0.0) {
- secCount = 6.0;
- }else {
- secCount = 0.0;
- }
- return secCount;
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
- if ([indexPath section] == 0.0) {
- if ([indexPath row] == 0.0 ){
- return 60.0;
- }else if ([indexPath row] == 1.0) {
- return 20.0;
- }else if ([indexPath row] == 2.0) {
- return 60.0;
- }else{
- return 50.0;
- }
- }
- return 40.0;
- }