苹果公司正在大力推广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的学习相关推荐

  1. iOS开发通过微信学习WCDB(二)

      通过<iOS开发通过微信学习WCDB(一)>这篇博客,相信大家对WCDB已经有了一个简单的了解和认识.这篇文章主要是为了进一步深入的学习 ###数据库加密   上篇文章中提到了,自己在 ...

  2. iOS开发Swift语言学习教程-欧阳坚-专题视频课程

    iOS开发Swift语言学习教程-16345人已学习 课程介绍         Swift这套视频是针对有Objective-C/iOS基础,想转成Swift开发的学习视频,视频中从Swift语法,结 ...

  3. IOS 开发高手课 学习笔记(第二部分)

    第二部分主要是性能监控相关 Part 7. 包大小:如何从资源和代码层面实现全方位瘦身? 官方 App Thinning App Thinning 是由苹果公司推出的一项可以改善 App 下载进程的新 ...

  4. 2021新出iOS开发程序员学习路线,涵盖大部分iOS知识体系【不会没收藏吧!】

    这个栏目将持续更新--请iOS的小伙伴关注! 整理不易,如果您觉得还不错,麻烦在文末 "点个赞" 或者 评论 "Mark",谢谢您的支持 1.字符串常用方法 字 ...

  5. IOS 开发高手课 学习笔记(第三部分)

    这一部分戴铭老师说的是一些底层的东西,然后推荐了一下第三方库,但是看同学者的反应,很多内容(主要是推荐的第三方库)都不是很完善(不能完全接受),所以这部分内容,要谨慎对待,然后自己实践和查询足够的资料 ...

  6. iOS开发通过微信学习WCDB(一)

      最近通过对微信ipa包解压发现微信有使用WCDB这个开源库,搜索了一下了解到WCDB(WeChat Database)是一个高效.完整.易用的移动数据库框架,基于SQLCipher,支持iOS, ...

  7. IOS 开发高手课 学习笔记(第一部分)

    年前购买了三门课程,Android 开发高手课.IOS开发高手课与从0开始学架构,利用工作的空余时间匆匆忙忙的,快6个月了,终于把前两门课程都过了一遍,也把其中一些遗漏的知识补充了,可以开始看第二遍, ...

  8. iOS开发—block介绍

    - (void)viewDidLoad {[super viewDidLoad];NSLog(@"我在玩手机");NSLog(@"手机没电了");[self c ...

  9. iOS开发 Block的用法

    一:在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别:b ...

最新文章

  1. 一文读懂比特币UXTO,TA其实没那么神秘!
  2. linux socket 清空缓存区
  3. mangodb 高频数据_金融分析量化系统,高频交易程序数据库通常采用哪种方式存贮数据?...
  4. 【听课笔记】2009 Google OpenSocial-CSDN开放平台交流会笔记
  5. java rmi 超时_java RMI服务超时
  6. elementui 加载中_ElementUI cascader级联动态加载回显和搜索看这个就够了
  7. Python使用正则表达式检查书稿中不应该出现的重复字
  8. 首款搭载国产CPU的域名服务器发布;iPhone彻底淘汰Lightning接口?ChromeOS 75发布 | 极客头条...
  9. python计算工资编程-当财务部的人会编程,会发生什么?Python实现自动化群发工资条...
  10. Java 最长递增子序列_最长递增子序列问题 Java
  11. Java和python哪个好,学哪个有用。
  12. android外接键盘,小米手机如何外接键盘
  13. was cached in the local repository, resolution will not be reattempted until(Maven常见问题)
  14. Linux下制作WIndows 7启动U盘
  15. 如何改变证件照大小?三步搞定
  16. app违规收集个人信息被通报了怎么办?教你如何整改
  17. GEE报错Tile error: Error in map(ID=198102T01):Element.copyProperties: The source parameter is require
  18. 韦伯望远镜拍摄图片震撼来袭!!
  19. Unity3D的Json篇:LitJson.dll插件
  20. 字体在ppt中可以整体替换吗_如何批量替换PPT中的字体?

热门文章

  1. javase哪部分最难_抖音拍哪方面的视频容易涨粉呢?抖音现在拍什么题材容易火?...
  2. KubeMeet 直播 | 现场直击大规模集群、混合环境下的云原生应用交付难题
  3. 启动延时缩短 50%-80%,函数计算发布镜像加速功能
  4. 年终盘点 | 七年零故障支撑 双11 的消息中间件 RocketMQ,怎么做到的?
  5. 为什么说 Serverless 引领云的下一个十年?
  6. 大学不挂科c语言题库及答案,C语言期末总复习,保你不挂科!
  7. 计算机领域认知个人陈述,计算机专业个人陈述十九
  8. fguillot json rpc_Hyperf 框架创建 JSON-rpc 服务
  9. docker 镜像_Docker镜像分层
  10. python unittest断言大全_Python-unittest框架 断言使用