【发布时间】:2018-01-13 15:52:24
【问题描述】:
我正在构建一个包含总共大约 65 MB 数据的应用程序,其中大部分以图像的形式存储为类的实例。现在应用程序运行良好,除了一件事:加载包含所有信息的 ViewController 大约需要 10 秒。这会在应用打开或进入前台后首次加载页面时发生。
下面是代码的样子(除了 AnatomyView 类的很多很多实例):
class SectionViewController: UIViewController, UIScrollViewDelegate {
class AnatomyView {
var viewName: String = ""
var normalImage: UIImage = UIImage(named: "Logo.jpg")!
var markedImage: UIImage = UIImage(named: "Logo.jpg")!
var steps: [UIImage] = []
var attribution: String = ""
init(viewName: String, normalImage: UIImage, markedImage: UIImage, steps: [UIImage], attribution: String){
self.viewName = viewName
self.normalImage = normalImage
self.markedImage = markedImage
self.steps = steps
self.attribution = attribution
}
}
let lateralYShoulder = AnatomyView(
viewName: "Lateral Y",
normalImage: UIImage(named: "Lateral Y Normal Unmarked.jpg")!,
markedImage: UIImage(named: "Lateral Y Normal Marked.jpg")!,
steps: [UIImage(named: "Lateral Y Step 1.jpg")!, UIImage(named: "Lateral Y Step 2.jpg")!],
attribution: "Case courtesy of Mr Andrew Murphy\nRadiopaedia.org, rID: 48080"
)
有哪些减少加载时间的策略?有没有办法将数据存储在其他地方,然后只导入需要的东西?如此长的加载时间使应用程序完全无法使用。
【问题讨论】:
-
尝试在调度队列中加载数据。
-
您应该避免分配没有任何意义的默认值。为什么要麻烦把
""和[]放在一起?所有这些都(正确地)在初始化程序中初始化。给出无意义的默认值是没有意义的,只是立即用初始化器的参数替换它们 -
@HiteshAgarwal:你能给我更多关于调度队列的信息吗?总的来说,我对 Swift 和编程很陌生。
-
@Alexander:很高兴知道——出于某种原因,我认为我需要在那里设置一个默认值。
-
@Nate 不,你不需要它,而且在很多情况下你不应该拥有它。不要在没有意义的地方强加默认值。例如。一个名为
""的视图,没有意义