问题:分类Category和类扩展Extension的区别
作者:
姜小舟 | 来源:发表于
2020-05-09 18:14 被阅读0次
- Category原则中只能增加方法(能添加属性的原因只是通过runtime解决没有setter和getter方法)
- Extension不仅可以增加方法,还可以增加属性,只是属性默认的访问权限是 private
- Extension中声明的方法没有在.m文件中实现,编译器会报警,但是在Category中的方法没有实现的话编译器是不会有任何警告的。这是因为Extension是在编译阶段添加到类中,而Categor是在运行时添加到类中的
- Extension不能像类别那样拥有独立的实现部分,他所声明的方法只能在其对应的类中实现
- Extension定义在.m文件的方法是私有的,定义在.h文件的方法是公有的
- Extension又称匿名分类,一般用来隐藏类的私有消息,你必须有一个类的源码才能添加一个类的Extension,所以对于系统一些类,如NSString,就无法添加类扩展,如果只是简单的创建Extension文件是能够创建成功的,但是如果你在文件中添加属性或者方法,在程序中一旦使用了该属性或者方法程序就会崩溃,会报找不到相对应的方法错误信息。
本文标题:问题:分类Category和类扩展Extension的区别
本文链接:https://www.haomeiwen.com/subject/caclnhtx.html
网友评论