iOS - ошибка инициализации UITableViewCell, EXC_BAD_ACCESS - PullRequest
1 голос
/ 23 сентября 2011

У меня есть простое представление, которое является третьим уровнем UINavigationController, оно показывает пустую таблицу из кончика, вот код файла .m:

#import "ThirdLevel.h"


@implementation ThirdLevel

@synthesize lista, categoria;


- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"Categoria: %@", categoria);

}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Overriden to allow any orientation.
    return NO;
}


- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc. that aren't in use.
}


- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 20;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 100;
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    //newtableView.separatorColor = [UIColor clearColor];
    static NSString *CellIdentifier = "Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

}

- (void)buttonPressed:(id)sender {
    NSLog(@"premuto");

}


- (void)dealloc {
    [super dealloc];
}


@end

Когда я запускаю его, сбой устройства и отладчик говорят, что в этой строке есть EXC_BAD_ACCESS:

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

У меня тот же код на втором уровне UINavigationController, и он работает нормально, действительно не понимаю, чтонеправильно.

Спасибо за любую помощь:)

Ответы [ 2 ]

4 голосов
/ 23 сентября 2011
  static NSString *CellIdentifier =@"Cell";

не

  static NSString *CellIdentifier = "Cell";

больше, чем

 return cell;//not found on ur code
1 голос
/ 23 сентября 2011

Возможно, вам следует return cell в этом методе:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    //newtableView.separatorColor = [UIColor clearColor];
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    return cell;
}

Обновлено:

И, как уже упоминалось, @AppleVijay добавьте @ при инициализации CellIdentifier

...