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

类别和类扩展的区别

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

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

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

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


更多:iOS面试题合集

你可能感兴趣的:(iOS面试题:类别和类扩展的区别。)