objective-c 笔记5:类别
?
2.类别的局限性:
? ?第一:无法向类中添加新的实例变量。(可以使用全局字典存储对象与你想要关联的额外变量之间的映射,但也要考虑是否s是完成当前任务的最佳选择)
? ?第二:名称冲突,即类别中的方法与现有的方法重名。当发生名称冲突时,类别具有更高的优先级。你的类别方法将完全取代初始方法,从而无法再使用初始方法,增加前缀是个不错的选择。
?
3.类表的优点(作用)
? 第一:类的实现不能分散到多个不同的.m文件中。而类别的实现则可以分散到多个不同的.m文件或多个不同的框架中。
? eg:
??@interface CategoryThing : NSObject{
[finder release];//好习惯从现在开始
? ? 委托对象ITunesFinder 又是长什么样呢?
? ?ITunesFinder 接口:
? ??@interface ITunesFinder : NSObject
? ? @end // so easy?
?
? ? 并不需要在@interface ?中声明方法。要成为一个委托对象,我们只需要实现已经打算调用的方法。
?
? ?@implementation ITunesFinder
?
? ?-(void) test1
? ?{
? ? ? .......
? ? }
?
? -(void) test2
? {
? ? .....
? }
?
? test1和test2 为委托方法。
?
? 委托和类别的关系:
?
?委托强调类表的另一种应用:被发送给委托对象的方法可以声明为一个NSObject 的类别。
?
响应选择器:
?@selector(test1:)
如果该委托对象能够响应给定的消息,则向该对象发送此消息,否则,将暂时忽略该委托对象,继续正常运行。
选择器可以被传递,可以作为方法的参数使用,可以作为实例变量存储。
?
?
?
?
?
?