WWDC Lab Q&A
WWDC期间每天都会有苹果工程师现场答疑活动,这种活动叫Lab。以下是我们的Q&A
Q:记录FPS最准确的方式是什么?
A: CADisplayLink会每隔16ms的时候回调一次,如果没回调就说明掉帧,这是目前最好的办法了。
Q: instruments 中记录FPS的方式和CADisplayLink是一样机制么?
A: 不太一样,instruments使用了一些debug flag来记录FPS,且不会受设备CPU影响,而CADisplayLink会受设备CPU影响,如runloop调度速度会影响CADisplayLink收到回调的速度。
Q: 如何高效处理线上的野指针问题
A: 目前没有专门的工具检测线上的野指针问题(我:如果野指针crash很难复现,且栈信息没什么用怎么办?)栈信息还是很有用的,你能给我看一个崩溃栈么?
这个栈显示是MediaPlayer相关的block被多次释放了,你需要找到这个block以及可能释放该对象的代码,然后用Address Sanitizer看
Q: 目前LLVM支持C_C++_Swift的一些内置attribute,我可以定制attribute么?
A: 目前还不支持自定义attribute,你想用这个做什么?(我:配合一些脚本生成代码,就像Java的annotation和注解处理器),C/C++没有任何像Java的东西😂,你用宏或者注释做吧
(我:那Swift呢?),em....Swift我不熟,那边的几个人比较熟(手指向另外几个工程师),额,应该说是他们设计了Swift┑( ̄Д  ̄)┍
(我转而问这几位Swift设计者)
Swift目前(not today)不支持,(我:那以后支持么?)有可能吧,你想拿这个做什么?(我:我用Swift写了一个网络库,目前使用特定的IDL以及脚本来生成Swift代码,不过我希望能用Swift+定制attribute来代替这个IDL),em... Codable可以实现类似的功能,建议你试试