【问题标题】:Getting callbacks of FSPathCopyObjectAsync in ARC在 ARC 中获取 FS Path CopyObjectAsync 的回调
【发布时间】:2012-02-20 01:20:28
【问题描述】:

我希望使用FSPathCopyObjectAsync,但我失败了。为了解决这个问题,我一直在其他地方寻找它的示例,尽管我正在尝试使用来自Matt Long's tutorial over on Cocoa is my Girlfriend 的稍微过时的源代码,然后我在a project on github, as a category on NSFileManager 中找到了一个更详细的示例。由于我的项目是在ARC下运行的,所以我尝试移植它,只成功了一半。

在其current form 中,实际复制工作正常,但从未调用回调方法MZCopyFSPathFileOperationStatusProc。该回调方法恰好是使用异步复制的唯一原因,否则还不如在后台运行同步复制。我假设未调用回调的原因是 ARC 错误地释放了某些对象,但可能还有其他事情发生。我坚持copyItemAsyncAtPath:toPath:destName:options:statusChangeInterval:error:方法的返回对象,所以不可能是吧?

谁能spot the error 解释为什么这个类别没有产生任何回调?是ARC吗?是别的吗?

非常感谢。 EP。

附:出于冗余原因,这里是要点:https://gist.github.com/6f3715753896ccf6fd35

【问题讨论】:

  • 让我们在此处查看代码,而不是在将要消失的网站上查看代码

标签: objective-c macos callback automatic-ref-counting core-services


【解决方案1】:

您的委托需要被某些东西强烈引用。 NSFileManager 只会持有对它的弱引用(应该这样做),所以如果你没有对它的强引用,你的委托将被释放并且不会看到回调。

您是否考虑过为回调使用块?那可能会更好。

【讨论】:

    猜你喜欢
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2017-05-03
    相关资源
    最近更新 更多