您的位置:首页 > 产品设计 > UI/UE

UI高级第一课  block语法——iOS学习连载29

2015-09-16 08:17 519 查看
1.通信方法:通知:一对多

代理和block:一对一

2.block也称为“闭包”

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

4.

声明block,前面的int表示的是block的返回值类型,

括号中的两个int表示的是block参数的类型,myBlock表示的是变量名

int (^myBlock)(int,
int);

5.实现block

myBlock = ^(int
a,
int b){

int
r = a + b;

return
r;

};

6.

调用block

result = myBlock(10,
40);

NSLog(@"result is %d", result);

7.
void Block

void (^voidBlock)() = ^{

NSLog(@"void Block");

};

//调用block

voidBlock();

8.

返回一个整形变量,
并且有两个参数作为block参数的block作为方法的参数

- (int)testMethod:(int(^)(int,
int))block;

9.方法没有返回值,

有一个block作为方法的参数,
block是没有参数和返回值的

- (void)testMethod1:(void(^)())block;

10.使用PersonBlock类型作为参数

- (int)testMethod2:(PersonBlock)block;

11.

一般把block的调用和声明放在一个类中,实现放在外部,这样能更好地实现回调功能

12.局部的基本数据类型变量,进入到block中,num会变成常量。如果需要在block中对num进行修改,需要加上关键字__block
(也可以用static关键字进行修饰)

13.
当没有加上__block时,不能对常量进行自加操作

14.

局部的OC对象进入到block时,

该对象会被retain一次(注意:
block在堆区上时才会起到retain作用)

15.

在ARC中,__block关键字不能解决循环引用的问题,因为即使使用了__block关键字,它仍旧是一个strong类型的对象,进入到block块时,仍旧会被block持有,这个时候__block关键字起的作用仅仅只是表示该指针变量进入到block块时是一个可修改的变量

16.
通常情况下,在block块中,我们再将__weak对象转换成一个strong对象,为了更方便拿到自身的成员变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: