o-block方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

o-block方法
Objective-C中的block是一种数据类型,用于在运行时保存代码。

它类似于函数,但有一些特殊之处。

以下是关于Objective-C中block的一些方法:
1. 定义block:
定义格式:
void (block名)();
示例:
void(myBlock)() {
NSLog(@"Hello");
}
2. 调用block:
使用格式:
block名();
示例:
myBlock();
3. 带有参数的block:
定义格式:
void (block名称)(参数列表) (参数列表) // 代码实现;
示例:
void(sumBlock)(int, int) (int x, int y) {
NSLog(@"%d", x * y);
}
4. 带有参数和返回值的block:
定义格式:
返回类型(block名称)(参数列表) 返回类型(参数列表) // 代码实现;
示例:
int(sumBlock2)(int, int) int(int a, int b) {
return a + b;
}
5. 使用typedef声明block类型:
typedef int (MySum)(int, int);
示例:
MySum sum(int a, int b) {
return a + b;
}
6. 在block中对局部变量进行修改:
block中可以访问和修改局部变量,但需要注意防止循环引用。

可以使用弱引用(weak)来避免循环引用。

示例:
weak MyClass weakSelf;
block myBlock2(NSInteger count) {
weakSelf.count = count;
}
7. 将block作为方法调用的参数:
预先声明block及其属性,然后定义方法接受block作为参数。

示例:
typedef int (MyBlock)(int a, int b);
@property (nonatomic, copy) MyBlock myBlock2;
- (int)methodTakeBlock:(MyBlock)block {
int sum = 0;
if (block) {
sum = block(10, 20);
}
return sum;
}
调用:
myBlock2 = ^(int a, int b) {
NSLog(@"%d", a + b);
};
[self methodTakeBlock:myBlock2];
以上就是Objective-C中关于block的一些方法,希望对您有所帮助。

相关文档
最新文档