在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
// 将类的实现方法代码反三到便于管理的数个分类之中. // 类中经常容易填满各种方法, 而这些方法的代码则全部堆在一个巨大的实现文件中, 有时这么做事不合理的,因为即使通过重构把这个类打散, 效果也不会太好, // 可以用 '分类'机制把刚才的类改写 // 例如 /* #import@interface EOCPerson : NSObject @property (nonatomic, copy, readly) NSString * firsrName; @property (nonatomic, copy, readly) NSString * lastName; @property (nonatomic, strong, readly) NSArray * friends; - (id)initWithFirstName:(NSString *) firstName andlastName:(NSString *)lastName; // Friendship methods - (void)addFriend:(EOCPerson *)person; - (void)removeFriend:(EOCPerson *)person; - (void)isFriendsWith:(EOCPerson *)person; // Work methods - (void)performDaysWork; - (void)takeVacationFromWork; // Play methods - (void)goToTheCinema; - (void)goToSportsgame; @end */ // 在实现该类时, 所有方法的代码可能会写在一个大文件, 如果还向类中继续添加方法的话, 那么源代码文件就会越来越大, 变得难与管理., 所以说, 应该吧这样的类分成几个不同的部分, // 例如, 可以用'分类'机制把刚才的类改写成下面的这样 /* #import@interface EOCPerson : NSObject @property (nonatomic, copy, readly) NSString * firsrName; @property (nonatomic, copy, readly) NSString * lastName; @property (nonatomic, strong, readly) NSArray * friends; - (id)initWithFirstName:(NSString *) firstName andlastName:(NSString *)lastName; @end @interface EOCPerson (Friendship) - (void)addFriend:(EOCPerson *)person; - (void)removeFriend:(EOCPerson *)person; - (void)isFriendsWith:(EOCPerson *)person; @end @interface EOCPerson (Work) - (void)performDaysWork; - (void)takeVacationFromWork; @end @ininterface EOCPerson (Play) - (void)goToTheCinema; - (void)goToSportsgame; @end */ // 现在,类的实现代码按照方法分成了好几个部分, 所以说, 这项语言特性当然就叫做'分类'啦, 在本例中, 类的基本要素 都实现在'住实现'里, 执行不同类型的操作所用的另外几套方法则归入各个分类中. // 使用分类机制之后, 依然可以把整个类定义在一个接口文件中, 并将其代码写在一个实现文件中. 可是,随着文件数量的增加, 当前这份试下文件很宽就变得更大了,此时可以把每个分类提取到各自的文件中. // EOCPerson+Friendship(.h/.m) // EOCPerson+Work(.h/.m) // EOCPerson+Play(.h/.m) // 比方说,与交友功能相关的那个分类可以这样写 /* .h 文件 #import "EOCPerson.h" @interface EOCPerson (Friendship) - (void)addFriend:(EOCPerson *)person; - (void)removeFriend:(EOCPerson *)person; - (void)isFriendsWith:(EOCPerson *)person; @end .m文件 #implementation EOCPerson (Friendship) - (void)addFriend:(EOCPerson *)person{ /////// } - (void)removeFriend:(EOCPerson *)person{ /////// } - (void)isFriendsWith:(EOCPerson *)person{ /////// } @end */ // 通过分类机制, 可以把类代码分成很多个抑郁管理的小块, 以便单独检视, 使用分类机制之后, 如果想用分类中的方法, 那么记得在引入 EOCPerson.h 时一并引入分类的头文件. |
请发表评论