繁体   English   中英

UIViewController-将实​​例变量初始化的位置(使用情节提要)

[英]UIViewController - where to put init of instance variables (using Storyboards)

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

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

编辑

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM