ibireme/YYAsyncLayer

CALayer内部没有属性的疑问

TheWalkingDead1024 opened this issue · 1 comments

对象的调整也经常是消耗 CPU 资源的地方。这里特别说一下 CALayer:CALayer 内部并没有属性,当调用属性方法时,它内部是通过运行时 resolveInstanceMethod 为对象临时添加一个方法,并把对应属性值保存到内部的一个 Dictionary 里,同时还会通知 delegate、创建动画等等,非常消耗资源。UIView 的关于显示相关的属性(比如 frame/bounds/transform)等实际上都是 CALayer 属性映射来的,所以对 UIView 的这些属性进行调整时,消耗的资源要远大于一般的属性。对此你在应用中,应该尽量减少不必要的属性修改。

CALayer是出于什么目的,内部没有属性,而去动态解析呢,这样有什么优势吗?还望大神指点。

CALayer 需要动画啊,看看 CAAction 和动画相关的那些方法。