(最初是我在Apple Developer Network
发布的,并且在四天内没有回复,所以我在这里复制/粘贴)
启用ARC。
在我的课堂上,我有一个UITableViewController
属性,
@property (nonatomic, strong) UITableViewController* tableViewControllerSectionMenu;
用于保存UIPopoverController
的表格视图。
此代码创建UITableViewController
并在viewDidLoad:
self.tableViewControllerSectionMenu = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
self.tableViewControllerSectionMenu.tableView.dataSource = self.dataSource;
self.tableViewControllerSectionMenu.tableView.delegate = self;
这可以正常工作,直到发生内存警告。
之后表格为空白。
我尝试将reloadData
放在调用popover的位置,但不会改变任何内容。
有人知道为什么会这样,以及如何解决这个问题?
通过谷歌搜索,我找到了几个解决方案,没有一个在我的案例中有效。
答案 0 :(得分:1)
我认为收到内存警告时会清理您的数据。您是否有机会实施didReceiveMemoryWarning
或viewDidUnload
?
答案 1 :(得分:0)
收到内存警告消息时,屏幕上当前未显示的所有视图都将被清除。它们应该在以后需要时重新创建。
重新创建它们意味着再次附加委托和数据源。由于在ViewController X中收到内存警告,并且它的视图在屏幕上,我的表视图被清除。
但由于我没有从X移动,因此委托和数据源未再次附加,因为这是在viewDidLoad
中完成的。
为了逃避从X回来一步,我为我的表视图创建了一个新类,其中viewDidLoad
我附加了委托和数据源。