Skip to content

Instantly share code, notes, and snippets.

@Josscii
Last active September 8, 2018 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Josscii/41e3abcee82a72d7f2b9f985463bc435 to your computer and use it in GitHub Desktop.
Save Josscii/41e3abcee82a72d7f2b9f985463bc435 to your computer and use it in GitHub Desktop.
WWDC 笔记

WWDC 笔记

Using Time Profiler in Instruments

直达链接

通过上图我们可以看到,每隔 1ms,instruments 会记录一次 call stack,然后把每个方法的调用次数累加,最后就得到需要分析的数据了。所以,time profiler 记录的并不是方法调用的 duration,而是方法在单位时间内调用的 times。

上图中最前面的秒数代表的是产生这些记录的总时间,Weight 代表的是该方法在这段时间的调用中所占的比例,Self Weight 代表的是本方法自己调用中所占的比例,每个方法调用的最右边可以看到该方法所在的 framework。

我们可以通过右边的 extended detail 来快速找到最耗时的方法,点击过后,左边的 tree view 就会为你展示出来。

Visual Debugging with Xcode (memory part)

直达链接

上图的左边部分是应用中产生过对象的类,中间部分是对象之间的引用关系,右边部分是对象产生的调用栈。

灰色的线代表的是弱引用,黑色的线代表强引用,要启用 visual debug 必须关闭 sanitizers。

Efficient Interactions with Frameworks (text part)

直达链接

  1. 用标准的 label 控件,因为苹果会为其优化,而这些优化随着升级你也会免费得到。
  2. 用更现代的布局方法,auto layout,文本系统会缓存一些布局信息,对性能提升有很大作用。
  3. 尽量给 attributedString 提供更多的信息,比如字体大小、文本颜色、paragraph style 等。
  4. 中文字体由于需要字体回调,所以性能更差一些。

Modern User Interaction on iOS

直达链接

手势第一

手势是先于 responder chain 识别的。

手势默认是互斥的

一个手势识别后,另一个手势 state 会被置为 failed,当然 target 的 action 不会被调用。

当然你也可以通过 delegate 的方法让多个手势同时识别。

你还可以让两个手势之前具有必要关系,一个手势失败后,另一个手势才开始识别。

而手势识别之前,hit-test 才是关键,它将手势识别的范围缩小,找到最适合响应的 view,然后将 touch 传递给这个 view 上所有的手势识别器。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment