我有一个带有2个标签的快速2应用程序。在两个屏幕上,我在viewDidAppear中执行dataTaskWithUrl,以在屏幕出现时刷新数据。 这导致,如果我在选项卡之间来回快速切换,我迟早会成为EXC_BAD_ACCESS,我想是因为内存问题。我的问题是:
1)在viewDidAppear中执行昂贵的任务(例如http操作)通常是不好的做法吗?
2)如果是,那么当屏幕出现时,使用适当的内存管理刷新数据的最佳做法是什么?
答案 0 :(得分:1)
要分析你的EXC_BAD_ACCESS
,检查是否有任何未使用默认值初始化的var,或使用可能导致此崩溃的nil值的数学运算,使用空数组的错误操作...
ViewDidLoad :每当视图加载到内存中时,都会调用此方法。例如,在这里添加视图,标签,按钮;没有这些形式,视图永远不会存在。
ViewWillAppear :UIViews的创作相当昂贵,你应该尽可能避免在ViewWillAppear上这样做 方法,因为当它被调用时,它意味着iPhone是 已经准备好向用户展示UIView,以及任何沉重的东西 这里会以一种非常明显的方式影响表现(比如 动画被推迟等等。