在引用BabyBlueTooth时 出现
对于引用了外部变量的Block,如果没有对他进行copy,他的作用域只会在声明他的函数栈内(类型是__NSStackBlock__),如果想在非ARC下直接返回此类Block,Xcode会提示编译错误的
解决:
在ARC环境下,上述代码会编译通过,因为ARC会自动加入copy操作。
typedef int(^MyBlock)();
MyBlock func()
{
//ARC
int i = 1;
return ^{ return i; };
}
-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·
在非ARC下,必须把Block复制到堆中才可以在函数外使用Block
typedef int(^MyBlock)();
MyBlock func()
{
//非ARC
int i = 1;
return [^{ return i; } copy]; 在这里修改一下就好了
}