在Table View中,最好将数据源对象的实例放在哪里?

5 浏览
0 Comments

在Table View中,最好将数据源对象的实例放在哪里?

我想要一个符合UITableViewDataSource协议并与数据对象一起工作的独立类。在哪里更好地保留、分配和初始化该类的实例?

如果我在与故事板连接的Table View Controller子类的ViewDidLoad方法中这样做,数据源实例在ViewDidLoad方法完成后被释放。

在Table View Controller子类中创建数据源对象的强引用属性,然后在ViewDidLoad中分配和初始化数据源实例会是更好的解决方案吗?

@interface MyTableVC : UITableViewController

@property (strong, nonatomic) MyTableViewDataSource *myDataSource;

@end

- (void)viewDidLoad

{

[super viewDidLoad];

self.myDataSource = [[MyTableViewDataSource alloc] init];

self.tableView.dataSource = self.myDataSource;

}

0
0 Comments

问题的原因是UITableView不会保留其数据源对象,这是为了避免循环引用。解决方法是在创建新的数据源对象时需要手动保留它。

在使用ARC的情况下,如果使用了“(nonatomic, assign) id dataSource”这段代码,应用程序会崩溃。

我展示的是UITableViewdataSource属性的声明,而不是建议修改代码。对不起,我之前理解错了。

文章整理完毕。

0