3

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

@interface PlaylistController : NSObject <UITableViewDataSource, UITableViewDelegate>

在我ViewControllerviewDidLoad方法中,我尝试分配数据源,但我得到了EXC_BAD_ACCESS.

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

我不知道为什么?

从阅读here(SO)我了解到它要么是强制转换问题(但我确实实现了所需的协议),要么是内存管理问题(但我使用的是ARC,根本没有触及发布)

4

2 回答 2

3

代替

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

采用

[playlistView setDataSource:self];

原因:

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

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

于 2013-02-28T16:46:48.133 回答
0

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

确保在 Nib 文件中创建并链接到 UITableView 的 IBOutlet。

@interface PlaylistController : NSObject <UITableViewDataSource, UITableViewDelegate>

IBOutlet UITableView* tableView;

@end

Then in your viewDidLoad you can do:

[tableView setDataSource:self]
于 2013-02-28T16:45:58.623 回答