• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iOS--EffectiveObjective-C阅读笔记(9)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap