//In App Delegate
UserProfileTableViewController *uptvc = [[UserProfileTableViewController alloc]init];
UITabBarItem *tempTabBarItem4 = [[UITabBarItem alloc]initWithTitle:@"Fans" image:nil tag:FANSTAB_INDEX];
//I am setting the user id information here directly in app delegate
uptvc.userId = [[UserStockInfo sharedUserStockInfo]getUserId];
UINavigationController *navconUptvc = [[UINavigationController alloc]initWithRootViewController:uptvc];
当我的UserProfileTableViewController因内存不足而被卸载时出现问题(可能是因为我的应用程序中使用了相机功能)。页面将无法正确加载,因为它缺少从应用程序委托传入的“userId”信息(如上所示)。我无法直接在UserProfileTableViewController中设置此userId信息(在视图中执行加载方法),因为其他页面在将页面推送到其堆栈时可能会传递不同的userId。
有关如何解决此问题的任何建议吗?
答案 0 :(得分:2)
首先,你应该将你的UserProfileTableViewController对象保存到app委托的ivar中(因为你在那里分配它)。其次,让app delegate将userId提供给控制器。第三,如果导航控制器从接口/取消分配中删除,那么即使内存不足,也不应该取消分配uptvc。 视图控制器维护控制器的完整层次结构,即使在内存不足时,已删除的内容也是视图,以及您要求他们删除的任何内容。
你当然希望将UINavigationController保留在AppDelegate的ivar中。