3 | 对象和消息传递
来源:互联网 发布:淘宝卖烟丝的怎么搜索 编辑:程序博客网 时间:2024/05/16 12:01
使用NSObject类的alloc方法可以为对象分配内存,将对象的实例变量初始化为0。但是alloc方法既没有将该对象的实例变量初始化为合适的值,也没有为这个对象准备其他必须的对象和资源。
NSObject提供了init方法可以完成对象初始化的基础任务。
通常使用一行代码就可以分配和初始化实例:[[ClassName alloc]init];
重构
真特么的高大上的名字。官方解释:在不更改外部行为的情况下重新构建现有的代码。麻痹的不就是修改部分功能吗。
工厂方法
工厂方法是指用于创建和初始化类的便捷方法,他们是类方法。
eg:
- (id)initWithName:(NSString *)name;
+ (id)PeopleWithName:(NSString *)name;
@implementation
+ (id)PeopleWithName:(NSString *)name {
return [[[self class] alloc] init];
}
@end
创建工厂方法的名称与初始化方法的名称类似,但是它含有类名前缀。
消息转发
相关方法:
forwardingTargetForSelector: (快速转发)
&
forwardInvocation:(标准转发)
如果你拥有一个定义了对象能够消化哪些消息的目标类,快速转发可以取得很好的效果。否则你就应该使用标准转发。
快速转发eg:
@interface Two : NSObject
- (void)youCanNotDo;
@end
@implementation Two
- (void)youCanNotDo {
NSLog(@"你做不到");
}
@end
@interface One : NSObject
- (void)youCanNotDo;//最好是给NSObject写一个含有该方法的分类,然后引用
@property(nonatomic)Two two;
@end
@implementation One
- (void)viewDidLoad {
[super viewDidLoad];
_two = [[Two alloc]init];
[self youCanNotDo];//会报错
}
- (id)forwardingTargetForSelector:aSel {
if(_two respondsToSelector:aSel) {//判断目标类是否能够处理
return _two;
}
return nil;
}
@end
分类在Objective-C File文件里。
- 3 | 对象和消息传递
- 对象、消息传递和方法
- Object-c对象和消息传递
- [精通Objective-C]对象和消息传递
- iOS编程基础-OC(三)-对象和消息传递
- 【Objective-C Runtime】类和对象的数据结构和消息传递机制
- 消息传递和 Java 消息服务(JMS)
- MFC-消息映射和消息传递
- MFC-消息映射和消息传递
- 消息传递和 Java 消息服务(JMS)
- 消息传递和 Java 消息服务(JMS)
- WINCE下消息传递和消息队列
- 消息映射和命令传递
- 消息传递 handler和Message
- 共享内存和消息传递
- CCNotificationCenter传递消息和数据
- 窗口消息处理对象的传递
- 函数指针实现对象传递消息(回调)
- 广播的发送与接收
- 插入排序原理分析及Java实现
- Android中使用AsyncTask做下载进度条
- Nova Mitaka Release Notes 中文版
- 自定义View(一)
- 3 | 对象和消息传递
- 常见脚本命令
- windows设置关机自启动脚本
- 自定义View--刮刮卡
- 用webmagic实现的网络爬虫
- ZOJ 3785 - What day is that day?
- 基于Android的富文本展现开发实践--AndroidCoreText
- CEdit光标置于起始位置
- 将文件放到Android模拟器的SD卡中的两种解决方法