iOS Returning block that lives on the local stack 错误解决
在引用BabyBlueTooth時(shí) 出現(xiàn)
對于引用了外部變量的Block,如果沒有對他進(jìn)行copy,他的作用域只會在聲明他的函數(shù)棧內(nèi)(類型是__NSStackBlock__),如果想在非ARC下直接返回此類Block,Xcode會提示編譯錯誤的
解決:
在ARC環(huán)境下,上述代碼會編譯通過,因?yàn)锳RC會自動加入copy操作。
? ? ?typedef?int(^MyBlock)();
? ? ? ? MyBlock?func()
? ? ? ? {
? ? ? ? ? ?//ARC
? ? ? ? ? ? int?i?=?1;
? ? ? ? ? ?return??^{?return?i;?};
? ? ? ? }
-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·
?? ? ? ?在非ARC下,必須把Block復(fù)制到堆中才可以在函數(shù)外使用Block
? ? ? ? typedef?int(^MyBlock)();
? ? ? ? MyBlock?func()
? ? ? ? {
? ? ? ? ? ? ?//非ARC
? ? ? ? ? ? ?int?i?=?1;
? ? ? ? ? ? ?return?[^{?return?i;?}?copy]; ? 在這里修改一下就好了
? ? ? ? }
總結(jié)
以上是生活随笔為你收集整理的iOS Returning block that lives on the local stack 错误解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RTL-8201以太网芯片外围电路
- 下一篇: 单字双字三字_单字写法-单字怎么读-双字