oc学习之旅:简单协议
2013-12-26 19:37
351 查看
#import <Foundation/Foundation.h>
#import "Boss.h"
#import "Coder.h"
int main(int argc,
const char * argv[])
{
@autoreleasepool {
/*
协议:本质就是一组接口
协议代理作用在:传参
回调
*/
/*
1.声明协议 @protocol
2.区分代理与被代理
(如果参数由a对象传往b对象
那么A就是B的被代理 B是A的代理)
3.在被代理中
声明id <xxx协议> delegate成员变量
同事实现@property @synthesize
在被代理的某个方法中调用代理的方法
固定写法
if(_delegate && [_delegate respondsToSelector:@selector(startCode)]){
[_delegate startCode];
}
4.代理方
代理方遵守协议<XXX协议>
代理实现接口
5.使用代理时
必须设置代理 A.delegate = B
*/
Boss *b = [[[Boss
alloc] init]
autorelease];
Coder *c = [[[Coder
alloc] init]
autorelease];
//将c设置为b的代码
b.delegate = c;
[b
work];
Chief *chief = [[[Chief
alloc] init]
autorelease];
Soldier *soldier=[[[Soldier
alloc] init]
autorelease];
chief.delegate = soldier;
[chief
order];
}
return 0;
}
CoderProtocal.h
#import <Foundation/Foundation.h>
//1.@protocol声明一个协议<遵守NSObject协议>
@protocol CoderProtocal <NSObject>
//不带参不带返回值
-(void) startCode;
@end
boss.h
#import <Foundation/Foundation.h>
#import "CoderProtocal.h"
//2.区分代理预备代理
@interface Boss : NSObject
{
//delegate必须遵守协议
id<CoderProtocal> _delegate;
}
@property(nonatomic ,assign)
id <CoderProtocal> delegate;
//工作
- (void)work;
@end
boss.m
@implementation Boss
@synthesize delegate =_delegate;
- (void)work
{
//代理固定写法
//设置了代理(代理不为空) &&
代理实现了startCode方法
if (_delegate &&[_delegate
respondsToSelector:@selector(startCode)]) {
[_delegate
startCode];
}
}
@end
Coder.h
#import "CoderProtocal.h"
//代理方遵守协议
@interface Coder :
NSObject<CoderProtocal>
Coder.m
//代码规范:标记协议代码
让代码更清晰
#pragma mark -CoderProtol
//实现协议
-(void)startCode
{
NSLog(@"代码写到吐血...");
}
#import "Boss.h"
#import "Coder.h"
int main(int argc,
const char * argv[])
{
@autoreleasepool {
/*
协议:本质就是一组接口
协议代理作用在:传参
回调
*/
/*
1.声明协议 @protocol
2.区分代理与被代理
(如果参数由a对象传往b对象
那么A就是B的被代理 B是A的代理)
3.在被代理中
声明id <xxx协议> delegate成员变量
同事实现@property @synthesize
在被代理的某个方法中调用代理的方法
固定写法
if(_delegate && [_delegate respondsToSelector:@selector(startCode)]){
[_delegate startCode];
}
4.代理方
代理方遵守协议<XXX协议>
代理实现接口
5.使用代理时
必须设置代理 A.delegate = B
*/
Boss *b = [[[Boss
alloc] init]
autorelease];
Coder *c = [[[Coder
alloc] init]
autorelease];
//将c设置为b的代码
b.delegate = c;
[b
work];
Chief *chief = [[[Chief
alloc] init]
autorelease];
Soldier *soldier=[[[Soldier
alloc] init]
autorelease];
chief.delegate = soldier;
[chief
order];
}
return 0;
}
CoderProtocal.h
#import <Foundation/Foundation.h>
//1.@protocol声明一个协议<遵守NSObject协议>
@protocol CoderProtocal <NSObject>
//不带参不带返回值
-(void) startCode;
@end
boss.h
#import <Foundation/Foundation.h>
#import "CoderProtocal.h"
//2.区分代理预备代理
@interface Boss : NSObject
{
//delegate必须遵守协议
id<CoderProtocal> _delegate;
}
@property(nonatomic ,assign)
id <CoderProtocal> delegate;
//工作
- (void)work;
@end
boss.m
@implementation Boss
@synthesize delegate =_delegate;
- (void)work
{
//代理固定写法
//设置了代理(代理不为空) &&
代理实现了startCode方法
if (_delegate &&[_delegate
respondsToSelector:@selector(startCode)]) {
[_delegate
startCode];
}
}
@end
Coder.h
#import "CoderProtocal.h"
//代理方遵守协议
@interface Coder :
NSObject<CoderProtocal>
Coder.m
//代码规范:标记协议代码
让代码更清晰
#pragma mark -CoderProtol
//实现协议
-(void)startCode
{
NSLog(@"代码写到吐血...");
}
相关文章推荐
- OC基础学习——协议简单笔记
- oc语言 ARC机制的简单学习
- Google PB协议学习记录--一个简单的例子--如何编译.proto文件为.java文件
- 黑马程序员---OC学习笔记之利用协议实现代理模式
- OC学习--代理与协议的使用
- OC学习篇之---协议的概念和用法
- 【IOS 开发学习总结-OC-20】★★★objective-c面向对象——协议(protocol)
- OC学习 第十一章 协议 内存管理
- 黑马程序员-我的第十六篇学习日记:OC中的协议
- OC学习之正式协议和非正式协议
- OC学习篇之-----类目·延展·协议之--类目
- ios自用学习笔记一委托协议的简单了解
- IOS学习---OC基础学习(ARC 协议)
- 【黑马程序员-学习笔记】OC-协议与分类
- OC学习篇之---协议的概念和用法
- OC基础语法学习7:协议
- Objective-C学习笔记(四)——OC实现最简单的数学运算
- 【转】Leach协议学习(2)——简单仿真测试
- OC学习7——类别、扩展和协议
- 黑马程序员——OC语言学习——ARC机制、block代码块、protocol协议、protocol协议的应用