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 时一并引入分类的头文件.
最新文章
- HTTP Status 500 - The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
- [c++] Basic ideas and Style Guide
- nodejs: C++扩展
- Hive报错之java.sql.SQLException: Field 'IS_STOREDASSUBDIRECTORIES' doesn't have a default value
- linux系统:rm-rf执行以后,怎么办?我来教你恢复文件。
- 【夯实Mysql基础】记一次mysql语句的优化过程!
- SmartAdmin 打开速度慢的原因
- 【转】Android兼容性测试CTS --环境搭建、测试执行、结果分析
- <;转载>;如何解决子级用float浮动父级div高度不能自适应的问题
- HDOJ 2736 Surprising Strings
- nexus 中央仓库
- pthread创建线程的简单演示
- [Swift]LeetCode371. 两整数之和 | Sum of Two Integers
- jmeter连接oracle数据库配置
- iOS 键盘上方增加工具栏
- 【MongoDB】MongoDb的“not master and slaveok=false”错误及解决方法 mongo连接从库出现问题
- U3D学习08-异步、协程
- repo sync出现“fatal: &#39;../platform/abi/cpp.git&#39; does not appear to be a git repository”的解决方案
- Spring Security构建Rest服务-0400-使用切片拦截rest服务
- CVE-2013-0025