Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Can';t以编程方式设置数据源,获取EXC\u BAD\u访问权限_Ios_Objective C_Uitableview_Datasource - Fatal编程技术网

Ios Can';t以编程方式设置数据源,获取EXC\u BAD\u访问权限

Ios Can';t以编程方式设置数据源,获取EXC\u BAD\u访问权限,ios,objective-c,uitableview,datasource,Ios,Objective C,Uitableview,Datasource,我试图以编程的方式为我的表视图设置数据源,我创建了一个类,它实现了UITableViewDataSource协议(我不知道implements是否是它的正确名称,对OC来说是新的,我来自Java) @接口控制器:NSObject 在我的ViewController中的viewDidLoad方法中,我试图分配数据源,但我得到了EXC\u BAD\u访问权 [playlview setDataSource:[[playlicontroller alloc]initWithPlaylist:playl

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

@接口控制器:NSObject

在我的
ViewController
中的
viewDidLoad
方法中,我试图分配数据源,但我得到了
EXC\u BAD\u访问权

[playlview setDataSource:[[playlicontroller alloc]initWithPlaylist:playlist]]

我不知道为什么


通过阅读这里(所以),我了解到这可能是一个强制转换问题(但我确实实现了所需的协议),或者是内存管理问题(但我使用的是ARC,根本不涉及释放)

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

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

@interface PlaylistController : NSObject <UITableViewDataSource, UITableViewDelegate>

IBOutlet UITableView* tableView;

@end

Then in your viewDidLoad you can do:

[tableView setDataSource:self]
@接口控制器:NSObject
IBUITableView*表格视图;
@结束
然后在viewDidLoad中,您可以执行以下操作:
[tableView setDataSource:self]
而不是

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

原因:

您试图将DataSource设置为处于
自动释放中的实例。它被释放,你就会得到错误


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

我正在尝试以编程方式将数据源设置为我的表视图
如何??它应该是我正在尝试以编程方式设置我的表视图的数据源。你是对的,修复了它:)危险
@属性(非原子,赋值)id数据源
(注意
赋值
)!无论如何,你需要发布一个stacktrace。你不会说你是在使用ARC还是MRR,这不是你马上要面对的问题,但是如果你在使用ARC,那么这样设置数据源就不会保留它(因为属性是
assign
),所以它几乎会立即消失。您需要将其分配给视图控制器的实例变量,然后将其设置为数据源。这样做意味着将当前上下文实例(
ViewController
)设置为数据源,我不希望更新我的答案。但是,如果扩展UITableViewController而不仅仅是NSObject,您不需要在.h文件中声明UITableView。如果要将其分配给其他类的实例,我应该怎么做?创建一个strong类型的属性,然后将其分配为数据源。将strong属性指定给它与trojanfoe建议的assign属性有什么区别?
strong
in ARC means
retain
assign
weak
相比,除非所有者将其释放,否则它将在那里。因此,如果我正确地理解了这一点,赋予它assign属性将是错误的。因为ARC将能够在其指定的对象仍在使用时释放它?
[playlistView setDataSource:self];