【问题标题】:From which thread is dealloc called under ARC? [duplicate]在 ARC 下从哪个线程调用 dealloc? [复制]
【发布时间】:2016-08-30 09:26:59
【问题描述】:

我一直认为在 ARC 下,dealloc 始终是从您最初用于创建对象的同一线程中调用的,但我对此不太确定,并且在 Apple 的官方文档中找不到对此的任何引用。这是真的?还是从保存最后一个引用的线程调用?

编辑: 我了解 ARC 会自动添加 retainrelease 调用,这是否意味着 dealloc 将在调用最后一个 release 的同一线程上执行?

【问题讨论】:

    标签: ios objective-c macos automatic-ref-counting


    【解决方案1】:

    ARC 不会更改任何关于将在哪个线程上进行内存管理的语义。

    【讨论】:

    • 我明白,但你能详细说明一下吗?我知道 ARC 会自动添加保留/释放调用,这是否意味着 dealloc 方法将从调用 release 的最后一个线程执行?
    • @Raspu,对。它将在最后一个release 引用计数达到零时调用。
    • @Cy-4AH 非常感谢!
    • 实际上,如果你在 dealloc 中做的事情关心它在哪个线程上运行,那么这是非常可疑的。
    • @gasher729 是的,我只是在看到代码中的一个错误(不是我写的)之后对此感到好奇。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2015-04-06
    • 2013-10-19
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多