iOS面试题:类别和类扩展的区别。

类别和类扩展的区别

1、类别中原则上只能增加方法(能添加属性的的原因通过runtime解决无setter/getter的问题,添加的属性是共有的,本类和子类都能访问);

2、类扩展中声明的方法没被实现,编译器会报警,但是类别中的方法没被实现编译器是不会有任何警告的。这是因为类扩展是在编译阶段被添加到类中,而类别是在运行时添加到类中。

3、类扩展不能像类别那样拥有独立的实现部分(@implementation部分),也就是说,类扩展所声明的方法必须依托对应类的。m部分来实现。

4、类扩展不仅可以增加方法,还可以增加实例属性;定义在 .m 文件中的类扩展方法和属性为私有的,定义在 .h 文件(新建扩展文件的。h)中的类扩展方法和属性为公有的。类扩展是在 .m 文件中声明私有方法的非常好的方式。


更多:iOS面试题合集

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 类扩展 (Class Extension也有人称为匿名分类) 作用: . 能为某个类附加额外的属性,成员变量,方法...
    不吃饭会饿阅读 6,734评论 1 3
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,830评论 1 32
  • 昨夜,我做了一个梦!我梦到我和一群探险者一起去了大海的地方,我想去挑战自己,我想去锻炼自己,我想用生命像水手...
    宇宙男儿阅读 1,566评论 0 1
  • 一日一景 秦淮西岸无农村,筑梦直上云霄生。 风和云淡妆金陵,现代都市隐古城。
    吉光片羽_9bc2阅读 1,911评论 4 20
  • 曾经一度迷恋言情小说的我,看到悲伤的结局,一度笃定除了死亡,否则一切都无法把相爱的人分开,慢慢慢慢时间与现实教会了...
    爱我不如娶我阅读 3,229评论 0 0