block的知识点

//

//  main.m

//  1211块练习

//

//  Created by jerehedu on 14/12/11.

//  Copyright (c) 2014年 jereh. All rights reserved.

//

#import <Foundation/Foundation.h>

int a=10;

int b=12;

int main(int argc, const char * argv[])

{

//    int __block c=19;

@autoreleasepool {

//block可以访问局部变量,但是不能修改

//__block 块修改 关键字   不加的话无法在块内对c(局部变量)进行修改

__block int  c=19;

void (^nBlock)()=^{

c+=9;

NSLog(@"%i",c);

};

nBlock();

//外部变量可以直接操作、修改

void (^nmBlock)()=^{

NSLog(@"%i",++a);

};

nmBlock();

NSLog(@"%i,%i",a,b);

//block保存一段代码,用花括号括起来

//block标志是^

/*block与函数比较

1.可以保存代码

2.有返回值

3.有形参

4.调用方式和C调用函数一样

*/

//没有参数返回值的块

void (^ myBlock)();

myBlock=^{

NSLog(@"没有参数返回值的块。");

};

//直接写完不会被执行,被保存起来了,需要调用

//块的调用

myBlock();

//写在一起

void(^ myblock)()=^{

NSLog(@"没有参数返回值的块。");

};

myblock();

//可以把块写在main的上面,则整个函数体内直接调用即可

//==========================================================

//有参数返回值的 加法

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

return a+b;  //此处括号内形参可以省略

};

NSLog(@"有参数返回值的 加法  %i",addBlock(1,2))  ;

//通过block,打印出N条直线,N是调用块时传入

void(^ lineBlock)(int)=^(int N){

for (int i=0; i<N; i++) {

NSLog(@"______________");

}

};

lineBlock(5);

//减法

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

return a-b;

};

NSLog(@"减法 %i",subBlock(23,12));

//typedef  用MyBlock代替int (^ MyBlock)(int,int)

typedef int (^ MyBlock)(int,int);

//乘法简化 MyBlock是类型,不能直接用来调用block,需要用变量名来调用

MyBlock mulBlock=^(int a,int b){

return a*b;

};

NSLog(@"乘积为: %i",mulBlock(1,2));

//除法

MyBlock divBlock=^(int a,int b){

return a/b;

};

NSLog(@"商为: %i",divBlock(9,3));

}

return 0;

}

时间: 2024-10-20 00:14:20

block的知识点的相关文章

block相关知识点

Block简介1.Block类似于函数,指向一块代码的指针(类似C中的回调函数)Block经常用来代替delegate2.跟函数的写法基本是一致的  声明 + 实现 + 调用    2.1声明:^ 脱字符                    返回类型(^Block的名字)(类型1 参数1,类型2 参数2……):    2.2 实现:Block的名字 = ^(类型1 参数1……){  }   2.3 调用:如果不调用,那么代码块中的内容是不会执行的,什么时候调用,就什么时候执行         

Linux 学习题目

在文件有很多的时候,rm -f * 删不掉,则用 # find ./ -type f | xargs rm -f # ls|xargs rm -f 1.删除一个目录下的所有文件,但保留一个指定文件 #mkdir  data #touch  a.txt  b.txt  oldboy.txt  oldgirl.txt 方法一:#find  /data/  -type  f  ! -name ="oldboy.txt"  |  xargs  rm  -f 方法二:#find  /data/

iOS开发项目篇—35封装网络请求

iOS开发项目篇—35封装网络请求 一.简单说明 1.分析项目对网路请求(AFN框架)的依赖 项目中,多个控制器都使用了AFN框架发送网络请求,如果AFN2.0存在重大BUg,或者是升级至3.0版本,那么对于整个项目都是及其危险的,所有用到AFN的地方都需要做出相应的修改. 另外,如果现在要求不再使用AFN框架,而是使用一个新的框架,那么有关AFN的依赖所关联的所有代码都需要重新来过. 如果把afn这个第三方框架从项目中删除的话,那么项目就相当于作废了,这就是项目对第三方框架的强依赖的体现. 说

block知识点

1.block引用局部变量的时候,该变量会作为常量编码到block中,在block中不能被修改. 2.使用 __block修饰的局部变量,不会作为常量被编码到block中,故而在block中可以被修改. 3.在block中引用一个局部的Objective-C对象的时候,该对象会被retain. 4.如果不想局部变量对象在block中被retain,应该使用 __block来修饰相应的局部变量. 5.在block中引用一个实例对象(假设A)的一个实例变量(假设 b),该实例对象(也就是A)会被re

超级猜图,小case,运用知识点: storyboard block封装变化点 蒙板 模态model

最近这几天,不知道突然玩超级猜图玩疯了,最后觉得还是不过瘾,干脆下了ipa,运用素材自己写了一个,没想到居然实现了大部分功能,真开心,直接上图:     上代码,不足之处,还望牛人支出,不胜感激: 1 #import "JHViewController.h" 2 #import "JHAppDate.h" 3 4 @interface JHViewController () 5 { 6 NSArray *_arrayImage; // 内容数组 7 int _ind

Block知识点总结

block的作用 block用于保存一段代码 在适当的时候再使用  它是一种数据类型 block的定义格式: 返回值  (^block变量名)(形参列表) = ^(形参列表) { 需要执行的代码}; 调用block 直接用block 变量名后面跟上小括号 小括号里面方式参数就可以了 如: block变量名(参数) 例如: 如下定义一个没有参数没有返回值的block void (^Operation)()= ^(){ } 如果block没有参数 可以这样写 void (^Operation)()=

H5移动端知识点总结

移动开发基本知识点 一. 使用rem作为单位html { font-size: 100px; }@media(min-width: 320px) { html { font-size: 100px; } }@media(min-width: 360px) { html { font-size: 112.5px; } }@media(min-width: 400px) { html { font-size: 125px; } }@media(min-width: 640px) { html { f

关于block使用的5点注意事项

1.在使用block前需要对block指针做判空处理. 不判空直接使用,一旦指针为空直接产生崩溃. if (!self.isOnlyNet) { if (succBlock == NULL) { //后面使用block之前要先做判空处理 return; } id data = [NSKeyedUnarchiver unarchiveObjectWithFile:[self favoriteFile]]; if ([data isKindOfClass:[NSMutableArray class]

IOS 阶段学习第24天笔记(Block的介绍)

IOS学习(OC语言)知识点整理 一.Block 的介绍 1)概念: block 是一种数据类型,类似于C语言中没有名字的函数,可以接收参数,也可以返回值与C函数一样被调用 封装一段代码 可以在任何地方调用 block 也可以作为函数参数,以及函数返回值 2)Block 实例代码 1 //定义了一个block类型MyBlock,MyBlock类型的变量只能指向带两个int的参数和返回int的代码块 2 typedef int (^MyBlock)(int,int); 3 //定义一个函数指针 4