Objective c 如何测试uuu属性uuu((objc_精确生命周期))?
我试图理解Objective c 如何测试uuu属性uuu((objc_精确生命周期))?,objective-c,automatic-ref-counting,llvm,Objective C,Automatic Ref Counting,Llvm,我试图理解\uu属性(objc\u精确的\u生命周期))在不同情况下的确切行为。这是我尝试的一个最低限度的“工作”示例(显示可能需要的地方): 但结果是: Foo init Foo: <Foo: 0x10020ba00> Weak foo: <Foo: 0x10020ba00> Foo dealloc fooinit 傅: 弱福: 福德洛克 因此,似乎ARC正在自动恢复对象(即使启用了优化)。如何构建一个简单的场景,让ARC主动释放一个不再使用的对象?我不太擅长读取汇
\uu属性(objc\u精确的\u生命周期))在不同情况下的确切行为。这是我尝试的一个最低限度的“工作”示例(显示可能需要的地方):
但结果是:
Foo init
Foo: <Foo: 0x10020ba00>
Weak foo: <Foo: 0x10020ba00>
Foo dealloc
fooinit
傅:
弱福:
福德洛克
因此,似乎ARC正在自动恢复对象(即使启用了优化)。如何构建一个简单的场景,让ARC主动释放一个不再使用的对象?我不太擅长读取汇编程序,但Apple LLVM 5.1的输出中没有自动释放调用;此外,完全删除自动释放池会产生相同的日志。ARC不会保证强指针在其最后一次引用之后有效,但它仍有权保留它。甚至像id\uu弱weakFoo=foo;void*voidFoo=(u桥void*)weakFoo;weakFoo=零代码>不要更改打印输出。我不确定你是否可以在不关闭指针的情况下强制释放。查阅
Foo init
Foo: <Foo: 0x10020ba00>
Weak foo: <Foo: 0x10020ba00>
Foo dealloc