猿问

ios block是什么数据类型?

ios block是什么数据类型


慕码人8056858
浏览 835回答 3
3回答

DIEA

Block是一种比较特殊的数据类型。它可以保存一段代码,在合适的时候取出来调用。Block的修饰ARC情况下:1、如果用copy修饰Block,该Block就会存储在堆空间。则会对Block的内部对象进行强引用,导致循环引用。内存无法释放。解决方法:新建一个指针(__weak typeof(Target) weakTarget = Target )指向Block代码块里的对象,然后用weakTarget进行操作。就可以解决循环引用问题。2、如果用weak修饰Block,该Block就会存放在栈空间。不会出现循环引用问题。MRC情况下用copy修饰后,如果要在Block内部使用对象,则需要进行(__block typeof(Target) blockTarget = Target )处理。在Block里面用blockTarget进行操作。返回值类型(^block变量名)(形参列表) = ^(形参列表) {};调用Block保存的代码block变量名(实参);默认情况下,,Block内部不能修改外面的局部变量Block内部可以修改使用__block修饰的局部变量。Block的模式1、无参数无返回值的Block2、有参数无返回值的Block3、有参数有返回值的Block
随时随地看视频慕课网APP

相关分类

iOS
我要回答