我正在尝试以编程方式为我的表视图设置数据源,我有一个我创建的类并且它实现了(我不知道implements是否是正确的词,OC的新手,我来自Java) UITableViewDataSource
协议。
@interface PlaylistController : NSObject <UITableViewDataSource, UITableViewDelegate>
在ViewController
方法的viewDidLoad
中我尝试分配数据源,但我得到了EXC_BAD_ACCESS
。
[playlistView setDataSource:[[PlaylistController alloc] initWithPlaylist:playlist]];
我不知道为什么?
从这里阅读(SO)我明白这是一个演员问题(但我确实实现了所需的协议)或内存管理问题(但我使用的是ARC,而不是触及发行版)
任何想法?
答案 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]