Apple Watch学习笔记

    每一次抬起手看Apple Watch,发现我第一眼瞄的是电量!并不是时间!!

    Apple Watch性能有点不理想,App启动速度有点慢,使用体验不是很理想。针对Apple Watch性能优化,分享以下几点心得:

1、减少通讯量&只更新需要变化的内容。WatchKit扩展应用开发目前面临的一个很大麻烦就是UI组件的状态都是可写而不可读的,这样每次刷新界面内容时很难判断哪些是变动的数据而不得不把屏幕上所有内容都更新一遍。我的做法是使用视图模型的存储可以减少通信量和实现仅更新变化对象的数据。判断原始内容是否和新内容一致。比如对于标签控件WKInterfaceLabel,利用以下代码可以实现仅当标签文本发生变化时才更新标签内容。

protocol Updatable {
    typealias T
    func updateFrom(oldValue : T?, to newValue : T?)
}
extension WKInterfaceLabel : Updatable {

//WKInterfaceLabel 可以实现读取表格后续数据行直接在表格后附加

    func updateFrom(oldValue:String?, to newValue:String?){
        if newValue != oldValue {
            self.setText(newValue)
        }
    }
}

2、延迟加载。为了优化Watch App的启动速度和响应能力,我们的程序设计上需要考虑初始化时只加载本屏显示的内容,滚屏显示的额外内容延迟加载。而使用dispatch_async异步方式去处理耗时长的界面图像元素加载等任务将能够更快的提前呈现视图控制器。大致代码结构如下:

  1. override func willActivate() {
          super.willActivate()
          dispatch_async(dispatch_get_main_queue(), {
              //加载界面的图像元素等长时间操作
          })
    }

3、初始化分页控制器。在使用多页视图模式时一定要特别注意,各页的控制器的init和awakeWithContext会比第一页控制器的willActivate更早执行,因此每页的数据加载等长时间任务有必要放到willActivate函数里运行。

4、其它补充。在某些场景中,我们会使用到提示功能,可能会在控制器里放置一个隐藏的标签等等。但如果这个标签数量太多,也会严重影响视图加载速度。

文章中难免有一些不足之处,欢迎批评指正,我将在批评中不断的成长,谢谢各位!






转载于:https://my.oschina.net/qiukun/blog/425811

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值