我正在使用情节提要。我只需要初始化一次UIViewController的实例变量。每次我从菜单打开viewController时,viewDidLoadawakeFromNib都会触发(我在Facebook应用程序中使用SWRevealViewController作为侧边栏菜单)。 awakeFromNib多次触发是否正常,还是SWR​​evealViewController错误?

因此,是否有一些特殊的初始化方法,还是需要从viewController外部设置实例变量(在AppDelegate中?)

编辑:

我发现了这个问题
SWRevealViewControllerSegue, reusing Viewcontrollers
我没有意识到,每次通过segue显示控制器时,它都会创建一个新的控制器实例。那是什么意思呢?这是否意味着如果我有一个从Web API加载的数据表-每次我通过segue来回访问时都会重新加载该表?。对我来说似乎不是很有效。 iOS正常吗?

最佳答案

根据情况,可以重新创建或重用视图控制器。当您将视图控制器推入导航控制器的堆栈时,几乎总是推入一个新实例。使用标签栏控制器时,它包含的视图控制器通常保存在内存中。为避免过多的内存消耗,有意义的是,尽可能清理视图控制器,而不要保留它们。

如果是SWRevealViewController,则是,听起来好像应该每次都重新创建视图控制器。理想情况下,您不应从视图控制器中的Web API直接加载任何数据;相反,请将您的API调用和模型提取到单独的类中,您可以从任何视图控制器中重复使用这些类。然后,您只需要从模型/商店类中获取最新数据,而不是在加载视图控制器时通过网络重新加载数据。

关于ios - UIViewController-将实​​例变量初始化的位置(使用 Storyboard ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21284139/

10-14 20:26
查看更多