类扩展 .h implemention
涉及实现细节的属性和方法,才在类扩展中声明。
类扩展是一组私有的声明。只有类和其类实例才能使用在类扩展中声明的属性,实例变量或方法。
.m文件中的声明的属性,仅内部可见,其他位置都不能见。
隐藏可变属性
在.h文件中,声明一个assets属性,它是一个NSArray对象、一个addAsset方法及一个——asset实例变量,它是一个NSMutableArra有对象开发者会在头文件公布属性和实例变量,但不确定你是否希望其他非BNREmplouee实例对象或其他开发者用他们。
现在你知道了类扩展。在BNREmployee.m中,增加以下声明:
@interface BNREmployee(){
NSMUtableArray *_asset;
}
@end
@implemention BNREmployee
@end
//在BNREmployee.h中,删除_asset实例变量的声明:
@class BNRAsset;
@interface BNREmployee : BNRPerson
@propert (nonatomic) unsigned int id;
@propert (nonatomic) NSArray *_asset;
现在大家知道asset是一个NSArray实例。非BNREmployee对象就要使用addAsset方法来操作这个数组。实际上,它是一个NSMutableArray实例。,可变版本的asset实例只有BNREmloyee对象才知道。
头文件及继承
子类无法获取父类的类扩展。子类会导入父类的.h文件。子类知道在父类头文件声明的内容,但无法知道父类的.m文件中的内容。