iOS - 类扩展与分类的区别

类扩展 (Class Extension也有人称为匿名分类)

作用:

能为某个类附加额外的属性,成员变量,方法声明

一般的类扩展写到.m文件中

一般的私有属性写到类扩展

使用格式:

@interface Mitchell()

//属性

//方法

@end

与分类的区别

分类的小括号中必须有名字

@interface 类名(分类名字)

/*方法声明*/

@end

@implementation类名(分类名字)

/*方法实现*/

@end

分类只能扩充方法,不能扩展属性和成员变量(如果包含成员变量会直接报错)。

如果分类中声明了一个属性,那么分类只会生成这个属性的set、get方法声明,也就是不会有实现。

举例说明:如果我们分别在,类扩展与分类中添加了两个属性,


类扩展与类别1.1.png

接下来在初始化方法中分别赋值,

意思是说,我们所创建的对象中并没有textOne这个属性。也就是说虽然我们再类别中声明属性不会报错,但是@property并没有自动为我们设置的属性生成set、get方法。

再说一下我们为什么不能包含类的 .m文件,因为这样会重复包含另一个类的实现文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 类扩展 (Class Extension也有人称为匿名分类)## 作用:能为某个类附加额外的属性,成员变量,方法声...
    Mitchell阅读 43,499评论 19 54
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,773评论 19 139
  • 重点掌握 3 类对象和方法 对象就是一个物体 类的独特存在就是一个实例,对实例进行操作叫做方法。方法可以应用于类或...
    Coder大雄阅读 5,022评论 0 2
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 10,474评论 0 13
  • 1.form表单有什么作用?有哪些常用的input 标签,分别有什么作用? 作用:将表单包裹起来形成完整的数据。收...
    我七阅读 2,999评论 0 0