IOS开发中非正式协议传值

IOC的开发中,简单概括就是

1.创建类

2.通过类创建对象

3.对象调用方法

4.方法实现功能

开发过程中很多时候我们都要在不同类之间相互传递值,比如说两个UIViewController  A 和 B。我们由A进入B,就需要在A中创建B这个对象,在能获得B这个对象的前提下,我们由A传值给B就可以用简单的属性传值或者是方法传值。但是当我们在B中完成了一定操作后要把所需数据返回给A时(回调),我们无法获得A这个对象,这时就可以通过定义非正式协议来实现传值

定义协议就相当于给当前类一个通商口岸,让其他类通过书写协议中的方法,来实现与定义协议类的贸易往来。

非正式的协议的书写打个比方:Apple公司设计了iPhone(协议的书写),但是它不会自己去生产iPhone,因为生产iPhone的对象都在中国(Apple中没有负责生产的对象)。Apple委托富士康来生产,富士康就代替Apple来生产iPhone(设置delegate)。本来富士康原来不生产iPhone, 现在要生产了,他就要达到Apple提出的要求(遵循Apple的协议),并且他得自己加一个生产iPhone的生产线(书写生产iPhone的方法),这就实现委托。Apple让富士康生产iPhone的时候(Apple的代理调用方法),并且给富士康IOS系统(方法参数),这时候富士康就是能生产处iPhone。

代码:

1.协议书写

Apple类的.h文件

#import <UIKit/UIKit.h>

@protocol SecondViewControlerDelegate;


@interface SecondViewController : UIViewController

@property(nonatomic,assign)id<SecondViewControlerDelegate>delegate;

@end
@protocol SecondViewControlerDelegate <NSObject>

- (void)sendMessage:(NSString *)str;

@end
2.遵循协议

富士康类.h文件

#import <UIKit/UIKit.h>
#import "SecondViewController.h"
@interface RootViewController : UIViewController<SecondViewControlerDelegate>

@end

3.设置代理

富士康类.m文件

SecondViewController * Apple = [[SecondViewController alloc]init];
    Apple.delegate = self;
4.书写协议方法

富士康类.m文件

- (void)sendMessage:(NSString *)str
{
    NSLog(@"%@",str);
}
5.调用方法

苹果类.m文件

[self.delegate sendMessage:@“生产”];

总结:

 1,协议不是类,它是定义了一个其他对象可以实现的接口

 2,协议定义了可以被其他任何类实现的方法



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值