iOS开发--Block

1.什么是Block,block 的作用

  ui开发和网络常见功能实现回调,按钮的事件处理方法是回调方法以及网络下载后的回调处理

(1)按钮 target-action   一个方法传入按钮

(2)表格视图    传入指针  self,回调视图控制器中的方法

(3)block 语句块。解决回调,理解为匿名函数,定义在方法里面

2.block的基本使用(语法)

block类型的变量

void (^block名称)(带参数)----参数可为0,1,2。。。。。

定义一个Block的变量

-----

void(^block)();

定义block语句块

block= ^void ()

{

NSLog( @"i am block");

};

block参数和返回值

block捕获外部变量

block注意事项

----很多时候,为强引用可能做成循环引用,这时可用

__weak typeof(self) weakSelf = self;

定义一个弱引用的weakSelf来处理事件。

3.block在开发中应用(oc,ui,网络)

1.返回数据

在第二个页面中,定义Block,并在特定的事件中添加Block。

  1. @property (copy,nonatomic) void (^changeCategory)(NSString *categoryId);
  1. 在特定的代码中,加入
  2.  
  3. if (self.changeCategory) {
  4. self.changeCategory(model.categoryId);
  5. }

在第一个页面中,执行第二个页面传过来的方法。

在第一个页面中,进入第二个页面的地方,加入

  1. [second setChangeCategory:^(NSString *cate) {
  2. _page =;
  3. _catagoryId = cate;
  4. //通过传递的数据,执行方法
  5. [self startDownLoadData:_catagoryId];
  6. }];

2.常用Block函数的使用

  1. [UIView animateWithDuration:<#(NSTimeInterval)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>];

第一个参数的时间,第二个参数的执行的动作,比如设置变大

view.frame= cgrectmake(x,y,w,h);

动画变换

view.transform = CGAffineTransformMakeRotation(M_1_PI);

第三个参数的执行后的动作,可用用nil ,^{},^(BOOL finished){}等来接。

iOS开发--Block的更多相关文章

  1. iOS开发——Block详解

    iOS开发--Block详解 1. Block是什么 代码块 匿名函数 闭包--能够读取其他函数内部变量的函数 函数变量 实现基于指针和函数指针 实现回调的机制 Block是一个非常有特色的语法,它可 ...

  2. ios开发 block语句块

    ios开发 block语句块 1.block 理解为匿名函数 2.block变量的定义 //定义block变量,^表示定义block //技巧:函数名左右加括号,在函数名前面在加^ void (^bl ...

  3. iOS开发-Block回调

    关于Block之前有一篇文章已经写过一篇文章Object-C-代码块Block回顾,不过写的比较浅显,不能体现出Block在实际开发中的重要性,关于Block的基础知识,可以参考之前的博客.在实际开发 ...

  4. iOS开发Block的使用

    Block 是从 iOS4引入的,在日常开发中,会经常用到Block.特别是在多线程中,Block的用处更广泛.而且,Block不仅可以接收参数,其本身也可以作为参数,因此,Block的功能非常强大. ...

  5. IOS开发 Block的学习

    苹果公司正在大力推广Block块语法的使用,据说Block会迟早取代一般协议代理的使用. Block最大的作用是函数回调,简化代码. 在ios中,将blocks当成对象来处理,它封装了一段代码,这段代 ...

  6. iOS开发-block使用与多线程

    Block Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. 苹果官方建议尽量多用block.在多线程.异步任务.集合遍历. ...

  7. iOS开发 -------- Block技术中的weak - strong

    一 Block是什么? 我们使用^运算符来声明一个Block变量,而且在声明完一个Block变量后要像声明普通变量一样,后面要加; 声明Block变量 int (^block)(int) = NULL ...

  8. IOS开发Block详细用法

    Block简介:       ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数 ...

  9. iOS开发——Block使用小结

    Block语法看上去好像很特别,但它实际上是作为极普通的C语言源代码处理的.Block的实质,就是Objective-C的对象. 1.Block的语法 ^ 返回值类型 参数列表 表达式 可省略返回值类 ...

随机推荐

  1. android xml特殊字符

    @ 对应 @ : 对应 :   对应 空格 对应 空格 ! 对应 ! " 对应 " # 对应 # $ 对应 $ % 对应 % & 对应 & ' 对应 ´ ( 对应 ...

  2. 利用OpenShift托管Node.js Web服务进行微信公众号开发

    最近写了一个微信的翻译机器人.用户只要关注该公众号,发送英文的消息,就能收到中文翻译的回复.有兴趣的读者可以扫描下面的二维码关注该公众号,尝试发送英文单词试试看.(有时候第一次发送单词会收到“该公众号 ...

  3. fiddler的前端资源代理功能。

       说一个很有用的东西.fiddler的autoResponder功能能把线上网站的资源引用代理到本地.比如这个js.我们改了想测测效果.但是如果经过中间的流程要把这个文件发布到线上去挺麻烦的,而且 ...

  4. 第九章 springboot + mybatis + 多数据源 (AOP实现)(转载)

    本编博客转发自:http://www.cnblogs.com/java-zhao/p/5415896.html 1.ShopDao package com.xxx.firstboot.dao; imp ...

  5. 几个开源XMPP Android客户端简单比较

      想做个基于xmpp的即时通讯工具,服务端已经基本成型了.当然需要客户端需要配合,PC端基于spark进行改造,手机端先从Android入手(IOS估计一个人是搞不过来了). 原本Android开发 ...

  6. C++使用继承时子对象的内存布局

    C++使用继承时子对象的内存布局 // */ // ]]>   C++使用继承时子对象的内存布局 Table of Contents 1 示例程序 2 对象的内存布局 1 示例程序 class ...

  7. PHP中phar包的使用

    PHP5.3之后支持了类似Java的jar包,名为phar.用来将多个PHP文件打包为一个文件. 首先需要修改php.ini配置将phar的readonly关闭,默认是不能写phar包的,includ ...

  8. Jquery打造的类似新浪微博@提醒功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Unity3D安卓打包参数配置与兼容性的关系分析

    前言 在使用Unity3D工程导出安卓安装包的时候,往往会遇到兼容性的问题,针对某些机型,要么无法打开游戏,要么会出现卡机的现象.面对这种情况,我们可以调节相关的参数来提高兼容性. 为了了解在打包时候 ...

  10. IQD文件模板以及cs7g.ini信息

    COGNOS QUERY STRUCTURE,1,1 DATABASE, cognos TITLE,test BEGIN SQL { select time, city_id, city_name, ...