10个迷惑新手的Cocoa&Objective-c开发问题
];
大部分时候使用 Cocoa Drawing 可以绘制出需要的效果,但是某些特殊时候需要 Core Graphic 绘制,例如一些特殊的阴影,clip效果,自定义pattern phase,blending style等等。
如果说 Core Graphics 和 Cocoa Drawing 是通用的 UI 绘制框架的话,那么 CA 显然是界面动画绘制的高级技术。 Core Animation 的对应 Cocoa Animation 部分应该是 NSAnimation 和 NSViewAnimation,但这2个差距比较大。NSAnimation 出现与 OS X 10.4,Core Animation 是 10.5 后出现的。NSViewAnimation 功能和使用相对简单。
简单来说,Core Animation 的作用对象是 CALayer, NSAnimation 的作用对象是 NSView。了解你的程序界面是在处理那种对象很重要。
对于这个绘制技术,这篇文章给了我很多启示大家也可以看看。Notes on Rendering 2D Graphics on a Mac?虽然是一篇 note 但是,记录了很多实际应用中的经历,可以对个各种绘制技术有一个比较全面的解析。
根据此文的介绍。Core Image 适合处理小量大图,而非常不适合处理大量小图。因为 CI 利用 GPU 运算,而数据到 GPU 的round-trip 时间数量级在 millisecond。这就意味着,1000 张小图分别再 GPU 运算,时间至少再 1000*1 ms。此文作者尝试绘制3000张小图片,利用 Cocoa Drawing 原本耗时 750ms,但是改用CI后耗时猛增到3秒。
所以,这就是CI在osx绘制技术里所处的宏观角色:单图做实时处理。
待写…
?
10. design pattern待写…
1:这里其实很有意思,为何我用“更高层次思考”,而不是“更底层次”。作为一个编译器和语言开发人员,面对的问题确实更底层没错,但是他们思考的维度更高,更抽象,这样子。一个不算恰当的比方就好像一个三维世界的人处理二维世界的一条线的问题。
2:Posting技术在10.5以后deprecated,并且64bit run-time也不再支持
?