尽管从技术上来说,分类里可以声明属性,但是这种做法还是要尽量避免,原因在于,除了 class-continuation 分类(延展)之外,其他分类都无法向类中新增实例变量,因此,他们无法把实现属性所需的实例变量合成出来。
正确做法是把所有属性都定义在主接口中,这是唯一能够定义实例变量的地方。而属性只是定义实例变量及相关存取方法所用的“语法糖”,所有也应遵循同实例变量一样的规则。
至于分类机制,则应该将其理解为一种手段,目标在于扩展类的功能,而非封装数据
封装数据所用的全部属性都定义在主接口中
在class-continuation外其他分类中,可以定义存取方法,但尽量不要定义属性
原文:http://my.oschina.net/wolx/blog/477641