注意 : block 用 copy 引用
typedef int (^MyBlock)(int, int);
void play()
{
NSLog(@"play mp3");
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
MyBlock sumBlock = ^(int a, int b){
return a + b;
};
MyBlock minusBlock = ^(int a, int b){
return a - b;
};
int r = minusBlock(10, 2);
NSLog(@"%d", r);
}
return 0;
}
——————————————————————————————
内存泄漏问题:
block 里面引用 self ,而self又强指针指着block。使self 不能被销毁。
解决方法:
__weak typeof(self) selfVc = self;
定义一个self的替身并用ruo指针引用着
————————————————————————————————
注意:在定义Block时,会在Block中建?立
当前局部变量内容的副本(拷贝)后续再对该变量的数值进?行修改, 重点
不会影响Block中的数值
如果需要在block中保持局部变量的
● 如果要修改Block之外的局部变量,需要使?用__block关键字
__block BOOL flag = NO;
————————————————
时间: 2024-10-12 16:48:11