从C++到objective-C----委托
来源:互联网 发布:阿里云解析域名过程 编辑:程序博客网 时间:2024/05/21 10:53
http://blog.csdn.net/xunyn/article/details/7563151
制实际是种设计模式,通过此种机制,能降低对象间的耦合。一上为概念描述。
本文 主要介绍的是Objective-C中的NSObject基类,是片初学者理解id类型的入门文章,
熟悉Objective-C的课直接阅读 iOS设计模式--委托模式
//环境
//Mac OS X 10.3.7
//Xcode Version 4.2.1
//使用的是Xcode的Command Line Tool工程,结果由命令行输出
代码(点这里下载)
- @interface MyFrameWork : NSObject{
- }
- @property (nonatomic,assign)NSObject * delegate;//委托对象的指针,类型为NSObject,即一切objective-c类的父类
- - (id)init;
- - (void) callDelegate;
- @end
- #import "MyFrameWork.h"
- @implementation MyFrameWork
- @synthesize delegate;
- - (NSString *) description{
- return (@"I am MyFrameWork");
- }
- -(id) init{
- self = [super init];
- if (self){
- }
- return self;
- }
- -(void)callDelegate{
- //通过delegate指针访问类Delegate的description方法
- NSString *string = [self.delegate description];
- //发现在最新版的编译器里面NSLog为了安全(支持ARC),只接受格式化的字符串,因为NSLog底层也是用printf来格式化输出的。
- //NSLog(str); // warning
- // NSLog(@"%@", str); // solution
- // NSLog(str, nil); // solution
- NSLog(string,nil);
- }
- @interface Delegate : NSObject
- @property NSInteger number;
- -(id)init;
- @end
- #import "Delegate.h"
- @implementation Delegate
- @synthesize number;
- -(NSString *)description{
- self.number = self.number + 1;
- NSString *string = [[NSString alloc] initWithFormat:@"I am Delegate,%ld calls",self.number];
- return (string);
- }
- -(id)init{
- self = [super self ];
- if (self) {
- self.number =0;
- }
- return self;
- }
- @end
首先定义了两个类,MyFrameWork类通过Delegate类完成访问Delegate的description方法。从这里看出objective-c的纯面向对象性,如果熟悉C++的童鞋,就会发现上述同样的功能的比较难完成,C++没有共同的父类,所以不存在一个指针可以指向任意的委托对象,这似乎是个不可解决的问题。但C++中有类的成员函数指针这一概念,具体的实现可以看一下这篇博文,多参数时实现的很巧妙。具体应用中可直接用id类型, 一般应用到框架上,还会同时带上协议,例如:
上图为使用Core Location框架(移动设备定位)中,类及协议组成的委托。
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- 从C++到objective-C----委托
- 从C++到objective-C----委托
- 从C++到objective-c----委托(模板方法)
- 从C++到objective-c----委托(模板方法)
- 从c++到Objective-C
- 从C++到Objective-C
- 从 C++ 到Objective-C
- 从 C++ 到Objective-C
- 从C++到Objective-C
- 从 C++ 到 Objective-C
- 从 C++ 到Objective-C
- 从C++到Objective-c
- 从C++到Objective-c
- 从C++到Objective-C
- 从 C++ 到Objective-C
- 从 C++ 到Objective-C
- 从 C++ 到 Objective-C
- 从 C++ 到 Objective-C
- hdu 4325 Flowers(呕心沥血)
- USB Host and Accessory
- C语言中的算符优先级 与 常见误区
- Concurrent Programming
- 如何从海量的文献中选取少量经典文献阅读并能写出漂亮的综述
- 从C++到objective-C----委托
- 从C++到objective-c----委托(模板方法)
- 引用博客园设计模式文章
- 安卓学习杂记——关于should use @string resource警告的消除
- Objective-C 多参数成员函数
- 文献综述写作结构
- 综述之法
- Xcode4快速Doxygen文档注释 — 简明图文教程(3分钟后爽歪歪)
- 2013年度中国优秀开源项目评选