2012-12-20 37 views
1

(本来我张贴这对Apple Developer Network并得到了在四天内没有反应,所以我复制/粘贴在这里)的iOS宽松的UITableView内容之后的“接收内存警告”消息

ARC启用。

在我的班级我有一个UITableViewController财产,

@property (nonatomic, strong) UITableViewController* tableViewControllerSectionMenu;

其用于保存表格视图UIPopoverController

此代码创建UITableViewController和套delagate和viewDidLoad:

self.tableViewControllerSectionMenu = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain]; 
self.tableViewControllerSectionMenu.tableView.dataSource = self.dataSource; 
self.tableViewControllerSectionMenu.tableView.delegate = self; 

数据源,直到内存警告会出现此工作正常。

之后表格为空。

我试图把reloadData放在弹出被调用的地方,但不会改变任何东西。

有人知道为什么会发生这种情况,以及如何解决这个问题?

通过谷歌搜索,我发现了几种解决方案,没有人在我的情况下工作。

回答

1

我认为您的数据在收到内存警告时会被清除。你有没有执行didReceiveMemoryWarningviewDidUnload

+0

是的我已经执行'didReceiveMemoryWarning',但视图控制器的主视图,但它只有'[super didReceiveMemoryWarning];'。只是为了澄清,我没有'tableViewControllerSectionMenu'的自定义类。我没有看到这两个东西在这里没有用,如果没有自定义视图控制器类,你能澄清一下吗? –

+0

是的,数据从该表视图控制器清除,但我的数据源仍然存在。 –

+0

然后我没有线索......抱歉 –

0

当收到内存警告消息时,屏幕上当前不可见的所有视图都将被清除。他们应该稍后在需要时重新创建。

重新创建它们还意味着再次附加委托和数据源。由于在ViewController X中收到内存警告,并且它的视图在屏幕上,我的表视图被清除。

但是,由于我不是从X移动,委托和数据源不再附加,因为这是在viewDidLoad完成。

为了避免从X中退出一步,我为我的表视图创建了一个新类,其中viewDidLoad附加了委托和数据源。