IOS开发 Block的学习
苹果公司正在大力推广Block块语法的使用,据说Block会迟早取代一般协议代理的使用.
Block最大的作用是函数回调,简化代码.
在ios中,将blocks当成对象来处理,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。
block官方定义:
注意block可以使用其定义范围内的变量.
如果你把block声明为一个变量,你可以把它当一个函数(function,本文中特指C语言形式的函数)一样调用:
block定义:
int (^myBlock) (int a,int b) = ^(int a,int b){
return a+b;
};
如果要修改就要加关键字:__block 双下划线哦!!!
简单的回调,废话不多说,直接上代码!!! 第二个页面往第一个页面回调
先在第二个页面定义一个块,然后写一个方法使用block;
#import<UIKit/UIKit.h>
typedefvoid(^myBlock)(NSString*,NSString*,NSInteger);
@interfaceSecondViewController:UIViewController
{
myBlockblock;
}
-(void)passValueUsingBlock:(myBlock)block1;
@end
.m文件
#import"SecondViewController.h"
@interfaceSecondViewController()
-(IBAction)Back:(id)sender;
@end
@implementationSecondViewController
-(void)passValueUsingBlock:(myBlock)block1
{
block=block1;
}
-(void)viewDidLoad
{
[superviewDidLoad];
}
-(IBAction)Back:(id)sender{
block(@"hello",@"女",21);
[selfdismissViewControllerAnimated:YEScompletion:nil];
}
@end
在第一个页面调用这个方法
#import"RootViewController.h"
#import"SecondViewController.h"
@interfaceRootViewController()
@property(weak,nonatomic)IBOutletUITextField*name;
@property(weak,nonatomic)IBOutletUITextField*sex;
@property(weak,nonatomic)IBOutletUITextField*age;
-(IBAction)Push:(id)sender;
@end
@implementationRootViewController
-(void)viewDidLoad
{
[superviewDidLoad];
//Doanyadditionalsetupafterloadingtheviewfromitsnib.
}
-(IBAction)Push:(id)sender{
SecondViewController*second=[[SecondViewControlleralloc]init];
[secondpassValueUsingBlock:^(NSString*name,NSString*sex,NSIntegerage){
self.name.text=name;
self.sex.text=sex;
self.age.text=[NSStringstringWithFormat:@"%d",age];
}];
[selfpresentViewController:secondanimated:YEScompletion:nil];
}
@end
转载于:https://www.cnblogs.com/moyunmo/p/3371599.html
IOS开发 Block的学习相关推荐
- iOS开发通过微信学习WCDB(二)
通过<iOS开发通过微信学习WCDB(一)>这篇博客,相信大家对WCDB已经有了一个简单的了解和认识.这篇文章主要是为了进一步深入的学习 ###数据库加密 上篇文章中提到了,自己在 ...
- iOS开发Swift语言学习教程-欧阳坚-专题视频课程
iOS开发Swift语言学习教程-16345人已学习 课程介绍 Swift这套视频是针对有Objective-C/iOS基础,想转成Swift开发的学习视频,视频中从Swift语法,结 ...
- IOS 开发高手课 学习笔记(第二部分)
第二部分主要是性能监控相关 Part 7. 包大小:如何从资源和代码层面实现全方位瘦身? 官方 App Thinning App Thinning 是由苹果公司推出的一项可以改善 App 下载进程的新 ...
- 2021新出iOS开发程序员学习路线,涵盖大部分iOS知识体系【不会没收藏吧!】
这个栏目将持续更新--请iOS的小伙伴关注! 整理不易,如果您觉得还不错,麻烦在文末 "点个赞" 或者 评论 "Mark",谢谢您的支持 1.字符串常用方法 字 ...
- IOS 开发高手课 学习笔记(第三部分)
这一部分戴铭老师说的是一些底层的东西,然后推荐了一下第三方库,但是看同学者的反应,很多内容(主要是推荐的第三方库)都不是很完善(不能完全接受),所以这部分内容,要谨慎对待,然后自己实践和查询足够的资料 ...
- iOS开发通过微信学习WCDB(一)
最近通过对微信ipa包解压发现微信有使用WCDB这个开源库,搜索了一下了解到WCDB(WeChat Database)是一个高效.完整.易用的移动数据库框架,基于SQLCipher,支持iOS, ...
- IOS 开发高手课 学习笔记(第一部分)
年前购买了三门课程,Android 开发高手课.IOS开发高手课与从0开始学架构,利用工作的空余时间匆匆忙忙的,快6个月了,终于把前两门课程都过了一遍,也把其中一些遗漏的知识补充了,可以开始看第二遍, ...
- iOS开发—block介绍
- (void)viewDidLoad {[super viewDidLoad];NSLog(@"我在玩手机");NSLog(@"手机没电了");[self c ...
- iOS开发 Block的用法
一:在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别:b ...
最新文章
- 一文读懂比特币UXTO,TA其实没那么神秘!
- linux socket 清空缓存区
- mangodb 高频数据_金融分析量化系统,高频交易程序数据库通常采用哪种方式存贮数据?...
- 【听课笔记】2009 Google OpenSocial-CSDN开放平台交流会笔记
- java rmi 超时_java RMI服务超时
- elementui 加载中_ElementUI cascader级联动态加载回显和搜索看这个就够了
- Python使用正则表达式检查书稿中不应该出现的重复字
- 首款搭载国产CPU的域名服务器发布;iPhone彻底淘汰Lightning接口?ChromeOS 75发布 | 极客头条...
- python计算工资编程-当财务部的人会编程,会发生什么?Python实现自动化群发工资条...
- Java 最长递增子序列_最长递增子序列问题 Java
- Java和python哪个好,学哪个有用。
- android外接键盘,小米手机如何外接键盘
- was cached in the local repository, resolution will not be reattempted until(Maven常见问题)
- Linux下制作WIndows 7启动U盘
- 如何改变证件照大小?三步搞定
- app违规收集个人信息被通报了怎么办?教你如何整改
- GEE报错Tile error: Error in map(ID=198102T01):Element.copyProperties: The source parameter is require
- 韦伯望远镜拍摄图片震撼来袭!!
- Unity3D的Json篇:LitJson.dll插件
- 字体在ppt中可以整体替换吗_如何批量替换PPT中的字体?
热门文章
- javase哪部分最难_抖音拍哪方面的视频容易涨粉呢?抖音现在拍什么题材容易火?...
- KubeMeet 直播 | 现场直击大规模集群、混合环境下的云原生应用交付难题
- 启动延时缩短 50%-80%,函数计算发布镜像加速功能
- 年终盘点 | 七年零故障支撑 双11 的消息中间件 RocketMQ,怎么做到的?
- 为什么说 Serverless 引领云的下一个十年?
- 大学不挂科c语言题库及答案,C语言期末总复习,保你不挂科!
- 计算机领域认知个人陈述,计算机专业个人陈述十九
- fguillot json rpc_Hyperf 框架创建 JSON-rpc 服务
- docker 镜像_Docker镜像分层
- python unittest断言大全_Python-unittest框架 断言使用