Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何测试uuu属性uuu((objc_精确生命周期))?_Objective C_Automatic Ref Counting_Llvm - Fatal编程技术网

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