一、扩展的作用
- 声明私有属性
- 声明私有方法
- 声明私有成员变量
二、扩展的特点
- 编译时决议
- 只以声明的形式存在,多数情况下寄生在宿主类的.m中
- 不能为系统类添加扩展
三、扩展和分类的区别
- 分类是运行时决议;扩展是编译时决议;(所以扩展中声明的方法没有被实现,编译器会报警,但是分类种的方法没有被实现编译器是不会有任何警告的)
- 分类原则上能增加属性,实例方法,类方法,协议,并且是公开的;扩展能添加方法,实例变量,默认是@private类型的,且只能作用于自身类,而不是子类或者其他地方;
- 分类有自己的实现部分;扩展无自己的实现部分,只能依托对应类的实现部分来实现;
- 分类可以为系统类添加分类;扩展不可以为系统类添加扩展;
四 、扩展格式
@interface XXX ()
//私有属性
//私有方法(如果不实现,编译时会报警,Method definition for 'XXX' not found)
@end
本文详细探讨了Objective-C中扩展的作用与特点,包括声明私有属性、方法和成员变量的功能,以及与分类的主要区别。扩展在编译时决议,而分类则在运行时,扩展无法为系统类添加,且其方法必须实现,否则编译器将发出警告。
2万+

被折叠的 条评论
为什么被折叠?



