OC——委托模式
来源:互联网 发布:设计ui的软件 编辑:程序博客网 时间:2024/05/19 12:25
协议与数据类型。
我们可以在使用的数据类型中为实例变量和方法参数指定协议名称。这样,可以给Objective-c的编译器提供更多的信息,从而有助于检查我们的代码的错误。
id类型表示一个可以指向任何类型的对象的指针,它是一个泛型对象类型。我们可以将任何对象赋值给一个id类型的变量。也可以将一个id类型的变量赋值给任何类型的对象指针。如果一个用尖括号括起来的协议名称跟随在id之后,编译器就会知道我们期望任意类型的对象,只要遵守该协议。
id类型的对象可以加协议限制。
表示该对象必须遵守指定的协议。
例如:id < NSCopying>obj;
委托是一种常用的设计模式。是两个类之间的关系。
在cocoa中的类,经常使用一种名为委托(delegate)的技术,委托是一个类的对象会要求委托对象执行它的某些操作。
委托的操作步骤:
1实现雇主类
2完成委托协议
3实现代理类
4建立委托关系。
例:
雇主类:
#import <Foundation/Foundation.h>
#import "Question.h"
@interface Student :NSObject
{
id<Question> delegate;
}
@property (assign)id <Question> delegate;
-(void)askQuestion;
@end
#import "Student.h"
@implementation Student
@synthesize delegate;
-(void)askQuestion
{
NSLog(@"ask question by student……");
[delegate answerQuestion];//调用teacher中类的方法。
}
@end
委托协议
#import <Foundation/Foundation.h>
@protocol Question <NSObject>
-(void)answerQuestion;
@end
代理类
#import <Foundation/Foundation.h>
#import "Question.h"
@interface Teacher :NSObject <Question>//采用协议
@end
#import "Teacher.h"
@implementation Teacher
-(void)answerQuestion//实现协议中的方法。
{
NSLog(@"answer queston by teacher……");
}
@end
#import <Foundation/Foundation.h>
#import "Student.h"
#import "Teacher.h"
#import "Question.h"
int main(int argc,constchar * argv[])
{
@autoreleasepool {
Teacher *teacher=[Teacher new];
Student *student=[Student new];
student.delegate=teacher;//建立委托关系。
[student askQuestion];
[teacher release];
[student release];
}
return 0;
}
- OC——委托模式
- OC-委托模式
- OC语言 委托模式
- OC-委托模式
- oc委托代理模式
- OC设计模式-委托模式
- Oc单例模式,委托模式
- OC教程5-委托delegate模式
- 设计模式——委托模式
- PHP之设计模式—委托模式
- OC设计模式之代理(委托)设计模式
- OC中的单例模式和委托模式
- OC中的单例模式和委托模式
- OC中的单例模式和委托模式
- OC学习日记014-单例模式和委托模式
- 【Objective-C】OC中代理(委托)设计模式
- Observer设计模式——委托事件
- iPhone源码分析——委托模式
- 程序员,如何在工作中崭露头角?
- KVM虚拟机代码揭秘——QEMU代码结构分析
- minicom 自动重复发送数据的实现
- 基于Visual C++2013拆解世界五百强面试题--题3-打印螺旋数组
- SVN 与 JIRA (参考链接)
- OC——委托模式
- 二分法+BFS(or DFS)
- 映射 SQL 和 Java 类型
- BloomFilter--大规模数据处理利器
- 精准营销
- 利用python修改mp3的标签
- 为KVM虚拟机配置虚拟网桥 (英语)
- sleep和wait的区别
- BloomFilter