文档章节

Apple Watch学习笔记

背锅侠
 背锅侠
发布于 2015/06/06 21:50
字数 599
阅读 18
收藏 0

    每一次抬起手看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、其它补充。在某些场景中,我们会使用到提示功能,可能会在控制器里放置一个隐藏的标签等等。但如果这个标签数量太多,也会严重影响视图加载速度。

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






© 著作权归作者所有

背锅侠

背锅侠

粉丝 10
博文 18
码字总数 13050
作品 0
东城
CTO(技术副总裁)
私信 提问
加载中

评论(1)

Apple Watch程序开发30分钟秒懂

苹果公司Apple Watch智能手表正在备受追捧,迅速掌握Apple Watch的APP架构,环境搭建,及实例开发将会让开发者占尽先机。我赢职场全国首发,30分钟玩转Apple Watch应用开发实例,让iOS爱好者...

Anthony_wmy
2015/03/09
3.6K
12
「少数派年度最佳作者」的数字生活方式,用 App 搭建高效工作生活流丨2017 年度征文

「少数派年度最佳作者」的数字生活方式,用 App 搭建高效工作生活流丨2017 年度征文 少数派2018-01-091 阅读 数字搭建app生活工作 「我是少数派,这是我的 2017」年度征文入围作品 在 今年的...

少数派
2018/01/09
0
0
Apple Watch问与答

注1:三角阳台版权所有。如无授权谢绝转载。 注2:下文中的「重按」都是指重(Zhong)重(Zhong)地按一下,而不是重(Chong)复按。 Apple Watch自4月24日发货以来,越来越多的同学已经收到...

delxu
2015/05/05
0
0
Apple Watch 学习之路 初见Watch 应用

apple 推出watchOS以来,已经到WatchOS3代了,那watch app能给我们带来什么? 1.提醒通知功能家居旅行必备良药啊 2.运动功能 3.心率功能 4.来电接听等功能 5.短信,微信快速回复,好吧这个功...

wongstar
2017/12/14
0
0
外观、体验升级 HUAWEI WATCH 2 Pro成智能手表领航者

文丨朱翊 在过去几年时间里,基于移动信息技术的迅猛发展趋势,各种智能终端等设备出现了井喷式发展势头。在移动互联网领域,构建“通讯”+“智能化设备”的潮流也因此成为大多厂商的主流选择...

朱翊
2017/11/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C 语言 二级指针的使用

#include <stdio.h>#include <stdlib.h>typedef struct node Node;struct node {int data;struct node* next;struct node* prev;};Node head;Node* insert(Node......

小张525
今天
4
0
【大数据技术】——Hadoop(1)

什么是大数据 基本概念 《数据处理》 在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经...

须臾之余
今天
9
0
比特币从地址逆向计算私钥

区块链 区块链简介 说到比特币,就不得不提区块链。那什么是区块链呢? 区块链本质是一个数据集,只不过数据的组织采用了比较特殊的方式,就是把数据拆分为一块一块的小数据集。 为什么要进行...

trayvon
今天
2
0
TypeScript……真香

写前端或者用 node 写命令行小工具一直采用的 es6 的语法,对于 TypeScript 则是秉持敬而远之的态度,毕竟团队中多推广一门语言所需要花费的精力都是让人望而却步的。所以对于 JavaScript 的...

郁也风
今天
3
0
shell基本案例

1、自定义rm linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做...

寰宇01
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部