iOS类与类之间的三种传值方式
来源:互联网 发布:广州cnc编程招聘 编辑:程序博客网 时间:2024/06/06 05:15
一代理方式
什么是代理模式
传入的对象,代替当前类完成了某一个功能,称为代理模式.
实现代理有以下方法
在要传值的类中1> 声明代理方法2> 定义代理属性3> 在适当的时候调用代理方法在要接受值的类中1> 设置代理对象2> 遵守代理协议3> 实现代理方法
图片如下:
代码如下
B.H类 类名 name///声明代理方法@protocol nameDelegate <NSObject>- (void)name:(B *)VC ;@end///定义代理属性@property (nonatomic, weak) id<nameDelegate> delegate;B.M///在合适的时候调用代理方法 if ([self.delegate respondsToSelector:@selector(a:)]) { [self.delegate a:self]; }A.M///设置代理对象,获取BB *b = [[B alloc]init];b.delegate = self;///遵守代理协议@interface contactController ()<nameDelegate>///实现代理方法- (void)name:(B *)VC { }
BLOCK传值
什么是BLOCK
苹果推荐的类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行。
BOLCK和函数的相似性:
(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样
///block如何写block数据类型定义格式:返回值类型(^block变量名)(形参列表)=^(形参列表){}调用blockblock变量名(实参);默认情况下,Block内部不能修改外面局部变量Block内部可以修改使用__block修饰的局部变量使用typedef定义Block类型typedef 返回值类型(^block类型名称)(形参列表)
图片如下
代码如下
B.H///声明一个block属性typedef void(^MyBlock) (NSString *);///定义一个block属性@property (copy ,nonatomic)MyBlock Block;@property (copy, nonatomic) NSString *name;B.M///在适当的时候调用Block if (self.MyBlock) { self.MyBlock(name); }A.M///保存一个代码块/ / /获取B B.MyBlock = ^(NSString *name){ ///值就有了 } ;
通知传值
一个完整的通知一般包含3个属性:
“`
- (NSString*)name; // 通知的名称
- (id)object; // 通知发布者(是谁要发布通知)
- (NSDictionary*)userInfo; // 一些额外的信息(通知发布者传递给通知接收者的信息内容)
“`
图片如下
代码如下
“`
///获取通知中心,点击按钮发送通知
[[NSNotificationCenter defaultCenter] postNotificationName:@”noti” object:nil userInfo:@{@”key”:name}];
///获取通知中心,接收通知,调用方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(text:) name:@”noti” object:nil];
///实现通知方法
- (void)text:(NSNotification *)noti {
///noti中的key,就可以取出值
NSString * name = noti.userInfo[@”key”];
}
///在调用结束的时候,要移除通知
- (void)dealloc {
//[super dealloc]; 非ARC中需要调用此句
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
“`
- iOS类与类之间的三种传值方式
- IOS类与类之间的传值
- ios 各对象之间的通信方式
- iOS开发页面之间的几种传值方式
- iOS界面之间的跳转方式
- iOS 页面之间的传值方式
- iOS 和 iWatch之间的通讯方式
- ios cell 与tableview之间传参数block方式
- uml类图(Class Diagram)中类与类之间的关系及表示方式
- uml类图(Class Diagram)中类与类之间的关系及表示方式
- uml类图(Class Diagram)中类与类之间的关系及表示方式
- android 与 服务器之间的推送方式
- android 与 服务器之间的推送方式
- android 与 服务器之间的推送方式
- JSon与java之间数据传输的方式
- Cache与主存之间的映射方式
- ajax与servlet之间的交互方式
- iOS开发笔记之三十二——类之间交互的方式之一——协议回调传值
- mysql索引总结----mysql 索引类型以及创建
- Android中的Handler机制
- 输出一个整数的每一位
- 【NOIp 2012】【线段树】借教室
- jquery树形插件zTree使用示例--入门
- iOS类与类之间的三种传值方式
- JSON的字符串解析成JSON数据格式的方法
- Velocity .vm 生成静态页面
- char *p[10] 和 char (*p)[10]
- mac系统sourcetree外部比对工具不能启用
- sublime text 3 介绍以及免费使用方法
- Toast的简单应用
- Yslow安装使用, 网站性能工具Yslow
- 区间覆盖问题 例题 POJ 2376