macOS & iOS 开发笔记

不写博客技术就会更好?也许给不了高深,但愿给你清晰

MacOS 上的 NSCell(比较 NSButton 和 NSButtonCell )

本文选摘自 关于NSCell : http://cocoa.venj.me/blog/about-nscell/


NSButton 和 NSButtonCell 的继承关系

  • NSButton的继承关系是:NSButton -> NSControl -> NSView -> NSResponder -> NSObject。应该说,是一个很长的继承链了。
  • NSButtonCell的继承关系是:NSButtonCell -> NSCell -> NSObject。

比之NSButton,少了两层继承关系。光凭这一点大致就能够解释为什么Cell的性能比Control高很多了。


Cell和Control 的关系

NSCell是控件的UI显示部分。
NSButton 和 NSMatrix 能够为 NSButtonCell 提供一个控制视图,用来实现Cell的显示。
不过 NSMatrix 需要直接操作 NSButtonCell 对象,而 NSButton 则不需要。因为它已经“封装”了所有 NSButtonCell 的同名方法。也就是说,对NSButton调用方法(不是所有的方法),实际上是对NSButtonCell调用方法,调用的时候,我们甚至可以无需知道NSButtonCell的存在。

所以在Interface Builder中,NSButton总是和NSButtonCell同时存在,在Interface Builder里,NSButton和NSButtonCell的Inspector里的属性也基本相同。

阅读更多

扫码向博主提问

去开通我的Chat快问

lovechris00

博客专家

爱拼才会赢
  • 擅长领域:
  • iOS
  • macOS
个人分类: macOS 开发笔记
所属专栏: macOS 开发
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭