iOS -- Effective Objective-C 阅读笔记 (9)

// 将类的实现方法代码反三到便于管理的数个分类之中.        // 类中经常容易填满各种方法, 而这些方法的代码则全部堆在一个巨大的实现文件中, 有时这么做事不合理的,因为即使通过重构把这个类打散, 效果也不会太好,        // 可以用 '分类'机制把刚才的类改写        // 例如    /*          #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 时一并引入分类的头文件.

posted @ 2017-09-29 16:34  Dingzhijie  阅读(144)  评论(0编辑  收藏  举报