无法以编程方式设置数据源,获取EXC_BAD_ACCESS

时间:2013-02-28 16:42:37

标签: ios objective-c uitableview datasource

我正在尝试以编程方式为我的表视图设置数据源,我有一个我创建的类并且它实现了(我不知道implements是否是正确的词,OC的新手,我来自Java) UITableViewDataSource协议。

@interface PlaylistController : NSObject <UITableViewDataSource, UITableViewDelegate>

ViewController方法的viewDidLoad中我尝试分配数据源,但我得到了EXC_BAD_ACCESS

[playlistView setDataSource:[[PlaylistController alloc] initWithPlaylist:playlist]];

我不知道为什么?

从这里阅读(SO)我明白这是一个演员问题(但我确实实现了所需的协议)或内存管理问题(但我使用的是ARC,而不是触及发行版)

任何想法?

2 个答案:

答案 0 :(得分:3)

而不是

[playlistView setDataSource:[[PlaylistController alloc] initWithPlaylist:playlist]];

使用

[playlistView setDataSource:self];

原因:

您尝试将DataSource设置为autorelease中的实例。它被释放,你得到错误。

您应该将dataSource设置为self,以便它指向该类的当前实例。

答案 1 :(得分:0)

我没有在任何地方看到UITableView对象。

确保您已创建IBOutlet并将其链接到Nib文件中的UITableView。

@interface PlaylistController : NSObject <UITableViewDataSource, UITableViewDelegate>

IBOutlet UITableView* tableView;

@end

Then in your viewDidLoad you can do:

[tableView setDataSource:self]