【发布时间】:2013-01-03 19:18:11
【问题描述】:
我真的对这个主题感到困惑。我在 Xcode 上使用 LLVM 4.1 编译器,当我在 ARC 关闭的情况下以 32 位或 x64 或 x64-x86 模式编译这样的简单基本代码时,一切正常
但是如果我使用自动引用计数模式编译;我收到BAD_ACCESS 错误。
这是一个示例代码:
-(void) doNothing{
__asm__ volatile(
"pushl %ebp;"
"movl %esp , %ebp ;"
"movl %eax , -4(%ebp);"
"movl %ebp, %esp;"
"popl %ebp;"
"leave;"
"ret " // retl in x86
);
}
我试图找出错误的来源我发现推送/弹出是唯一在 ARC 模式下工作的部分!
这太令人沮丧了,因为我过去在内联汇编中编写了一个巨大的代码,现在我必须将它与 ARC 结合到一个模块中。现在如果我不能解决它,我可能需要修改所有模块以便在没有 ARC 的情况下工作!
谁能帮我解决这个问题?
【问题讨论】:
-
ARC in XCode??错了,XCode 只是像 AppCode 一样的编辑器。你的问题应该在Arc in Cocoa。 -
你是对的。 ARC 在 Cocoa 中。
-
嗯...如果我们吹毛求疵,ARC 实际上是 ObjC 功能,而不是 Cocoa 功能。引用计数在 libobjc 中实现。
标签: xcode automatic-ref-counting llvm inline-assembly