block的初识

block的介绍:

Block是iOS4.0之后新增的一种语法结构,也称为“闭包(closure)”。 

SDK4.0新增的API大量使用了Block。 

Block是一个匿名的函数代码块,此代码块可以作为参数传递给其他对象。

对象

方法{

block块{

...代码

};

}

Block的使用:

1.block的声明

   //定义类型,定义变量

int(^sum)(int a, int b );

2.block的创建

  //实现block

sum = ^(int a, int b){

return a+b;

};

3.block的调用

//1直接调用

int sum1 = ^(int a,int b){

return a+b;

}(5,9);

NSLog(@"%d",sum1);

//2通过block变量调用

int sum2 = sum (20,39);

NSLog(@"%d",sum2);

4.多种情况下的block

#pragma mark creatkindsofBlock

- (void)creatkindsofBlock{

//1---无参数,无返回值

^(){

NSLog(@"无参数,无返回值");

}();

//2---有参数,无返回值

^(int a,NSString *text){

NSLog(@"%d, %@",a,text);

}(88,@"有参数,无返回值");

//3---无参数,有返回值

NSString *text = ^(){

return @"有返回值,无参数";

}();

NSLog(@"%@",text);

//4---有参数,有返回值

}

5.全局block变量

首先定义一个全局的block

{

int(^myBlock)(int a, int b);

}

#pragma mark - 全局block变量

-(void)createMyBlock{

//定义block变量

int(^sumBlock)(int x,int y);

//实现block,并且赋值

sumBlock = ^(int x,int y){

return x+y;

};

//直接赋值,block变量可以直接赋值

myBlock = sumBlock;

}

****全局block可以直接调用,直接赋值

//全局block变量

[self createMyBlock];

NSLog(@"sum :%d",myBlock(20,60));

当然block的初步认识里还应该有block的应用场景,block和变量,block的内存管理一些问题,我就不写了??。

因为本人是个小菜鸟~,所以啦,我还要去写作业做练习,麻烦各位不要吐槽,多多鼓励,谢谢。

希望对和我一样刚开始学习ios的同学们有一点点帮助,总结的不是很好,如有错误,请一定指正,我会虚心向您学习。。

时间: 2024-11-06 09:37:07

block的初识的相关文章

关于Block初识与自己的认识

前些天学到了Block,对于Block有了一些大致的认识 Block是什么? 我认为是一些行为的封装  举个例子  要将两个参数进行加减乘除    创建4个Block实现价钱乘除四个操作即可   用一个方法  传两个参数和一个block  返回就是block对这两个参数的操作 代码演示 1 #import <Foundation/Foundation.h> 2 #import "Calc.h" 3 int main(int argc, const char * argv[]

IOS开发之---初识Block

正文 Block简介 我们可以把Block当做Objective-C的匿名函数.Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观.另外,block的实现具有封闭性(closure),而又能够很容易获取上下文的相关状态信息. Block的创建 实际上,block使用了与函数相同的机制:可以像声明函数一样,来声明一个bock变量:可以利用定义一个函数的方法来定义一个block:也可以将block当做一个函数来调用. 1 // main.m 2 #im

Block系列1:初识block

//-------1.定义函数----- //1.函数 int sum(int a,int b) { return a+b; } //------------------2.声明--------- //2.声明函数指针[将sum换成*p就可以了] int (*p)(int a,int b); //(1)声明block[将sum换成^myBlock就可以了] int (^myBlock)(int a,int b); //举一反三 void (^myBlock2)(void); - (void)vi

Spring jms 与 ActiveMq初识

Spring JMS 与 ActiveMQ初识 1.1 Spring jms 与 ActiveMQ简介 jms 的全称是 Java Message Service,其主要作用是在生产者与消费者之间进行消息的传递:实际业务场景下,当A系统完成某项业务操作后,需要通知B系统或者其他任意系统 A系统操作完成的状态,以及操作中涉及到的相关信息,比如 当会员卡发放系统完成给用户绑定一张会员卡的操作之后,可以发出一条消息,消息内容是 uid或phone为XXX的用户,绑定了一张XX类型(普通卡.贵宾卡等)的

学习WebSocket一(WebSocket初识)

Java EE 7 去年刚刚发布了JSR356规范,使得WebSocket的Java API得到了统一,Tomcat从7.0.47开始支持JSR356,这样一来写WebSocket的时候,所用的代码都是可以一样的.今天终于体验了一把Tomcat发布的WebSocket,用着很爽,下面把这一历程分享给大家. 关键词:WebSocket, Tomcat 前提:使用Tomcat7.0.47,Firefox25.0.0.5046 首先Tomcat7.0.47自带WebSocket的示例程序,有两种版本,

第一节初识MVC实现计算器

第一节初识MVC实现计算器 /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab filetype=css: */ /*! * Base CSS for pdf2htmlEX * Copyright 2012,2013 Lu Wang * https://github.com/coolwanglu/pdf2htmlEX/blob/master/share/LICENSE */ /* Part 1: Web Page Lay

初识 HTML5

初识 HTML5(一) H5其实就是H4的一个增强版本,我们在利用H5进行网页的构造会更简便,标签语义更简洁明了.首先,我们要理解HTML4,它是HTML的标记+css2+JavaScript的一些基本应用,简言之,就是API+语法:而H5无非就是在原先的基础上面提供了一些新的功能. 1.H5的语义标签 1):html 的定义 ,它的一个文档声明 <!DOCTYPE html>  语法跟html4 差不多,w3c 提供了一个网站可以用来检测html 的语法.  https://validato

Day15 HTML补充、初识JavaScript

一.上节回顾 上节回顾: HTML 头部信息:编码.title.style.link(导入css文件) 身体: 内联 块级 --->inline-block(既有内联效果又有块级效果) a标签: target.href(跳转到url,#i1(id=i1跳转到顶部)) img标签: src alt iframe(伪Ajax,上传文件) src form标签 action提交url:method提交方式:get和post:上传文件:enctype="multipart/form-data&qu

iOS开发技巧系列---使用链式编程和Block来实现UIAlertView

UIAlertView是iOS开发过程中最常用的控件之一,是提醒用户做出选择最主要的工具.在iOS8及后来的系统中,苹果更推荐使用UIAlertController来代替UIAlertView.所以本文也并不提倡开发者再使用UIAlertView,本文的目的是探讨如何将原来的给变量赋值和通过Delete来回调的方式变成链式编程风格和通过Block来回调.通过学习对UIAlertView的改造让各位iOS开发者能够学会这种更加便捷的开发方式 什么是链式编程 对于有一定开发经验的开发者来说,链式编程