Jef*_*.Lu 2 c++ objective-c clang automatic-ref-counting
一篇与Objective-C的Block相关的博客说:当ARC启用时,代码如下:
typedef int (^blk_t)(int);
blk_t func(int rate)
{
return ^(int count){return rate * count;};
}
Run Code Online (Sandbox Code Playgroud)
可以用clang的-rewrite-objc翻译成C++代码如下:
blk_t func(int rate)
{
blk_t tmp = &__func_block_impl_0(__func_block_func_0, &__func_block_desc_0_DATA, rate);
tmp = objc_retainBlock(tmp);
return objc_autoreleaseReturnValue(tmp);
}
Run Code Online (Sandbox Code Playgroud)
我尝试用以下方法进行翻译,但没有成功。
问题:如何使用 clang 的 -rewrite-objc 选项将启用 ARC 的 Objective-C 代码转换为 cpp?
最后,我找到了缺少的 clang 选项:-fobjc-runtime; 重写在指定 objc-runtime 版本后起作用。例如以下命令:
clang -x objective-c -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.1.sdk -rewrite-objc -fobjc-arc -fblocks -mmacosx-version-min=10.11 -fobjc-runtime=macosx-10.11 -O0 test.m
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |