OC中的block
2015-12-23 19:40
281 查看
block分为四类 有参有返 无参无返回 有参无返 无参有返 无参无返 void(^block)() = ^() { nslog(@"printBlock"); } 有参无返 void (^block)(NSString *) = ^(NSString *string) { nslog(@"%@", string); } block就是一个函数体 只有在调用的时候才会执行{}内部的代码 在定义block的时候{}内部不会执行 block可以定义在一个方法的内部 也可以定义在一个方法的外面 block和协议作用相同 _ _(两个_ 为了能看清楚使用空格隔开,在写代码的时候不分开__) __block 的使用 - (void)viewDidLoad { __block int x = 100;(可以在block内部修改x) void(^block)(int) = ^(int y) { x = x + y; }
以两个界面之间传值为例
secondViewController .h文件 @interface SecondViewController:UIViewController @property (nonatomic, retain) void(^passValueBlock)(NSString *string); @end .m文件 - (void)buttonDidPress:(UIButton *)button { [self.passValueBlock(self.label.text)]; [self.navigationViewController popViewControllerAnimated:NO]; } firstViewController - (void)buttonDidPress:(UIButton *)button { SecondViewController *second = [[SecondViewController alloc] init]; second.passValueBlock = ^(NSSting *string) { [self resetLabelText:string]; } [self.navigationViewController pushViewController:second animates:NO]; } block中的resetLabelText方法 - (void)resetLabelText:(NSString *)string { self.label.text = string; }
相关文章推荐
- 跟奥巴马一起编程
- linux服务器 退出telnet 命令
- Android之获得内存剩余大小与总大小
- 安卓ADB指令
- Android事件传递机制
- Local database deployment problems and fixtures
- Duplicate复制数据库并创建物理StandBy(pfile版本)
- 和前司运维(张松)谈网络
- 关于软件工程和计算机科学的区别
- Android 中的 Service 全面总结
- bzoj2286: [Sdoi2011]消耗战
- Python基础教程之第2章 列表和元组
- Oracle数据库备份、恢复及常见问题
- Install MemCache at window
- vi/vim 常用快捷键
- Qt多线程编程
- 水晶报表官方示例
- python collections.Counter笔记
- 网页设计的基本原则
- OC Copy自定义类