为什么使用UITableView时会发生EXC_BAD_ACCESS错误? [关闭]

问题描述 投票:0回答:1
我是Objective-C的新手。我只想填充一些UITableViewCell。我从服务中获取数据并重新加载我的UITableView。前8-9个项目显示完美,但是当我滚动EXC_BAD_ACCESS时发生错误。错误发生在cellForRowAt方法上。我认为这是因为Objective-C中的内存管理。看来我没有正确使用分配或释放相关的东西。问题是如何避免该错误以及为什么会发生?这是我的完整代码:

@interface ViewController () <UITableViewDataSource> @property (weak, nonatomic) IBOutlet UITableView *movieTableView; @end @implementation ViewController MovieService *service; NSArray<Movie*> * moviesList; - (void)viewDidLoad { [super viewDidLoad]; service = [[MovieService alloc] init]; [self fetchMovies]; } - (void) fetchMovies { [service getMovies:^(NSMutableArray<Movie *> *movies) { moviesList = movies; [self.movieTableView reloadData]; }]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return moviesList.count; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"some-cell" forIndexPath:indexPath]; cell.textLabel.text = moviesList[indexPath.row].movieName; return cell; } @end

ios objective-c tableview exc-bad-access
1个回答
-1
投票
一旦尝试通过将NSArray<Movie*> * moviesList;声明为NSMutableArray并在viewDidload分配中并将其初始化,如下所示,

moviesList = [[NSMutableArray alloc] init];

© www.soinside.com 2019 - 2024. All rights reserved.