gpt4 book ai didi

objective-c - block 被释放时的回调

转载 作者:行者123 更新时间:2023-11-30 15:32:59 25 4
gpt4 key购买 nike

我正在通过 Obj-C 运行时从 C 调用 Cocoa。

我能够使用这里的信息创建 block 对象[1],并将它们作为参数传递给 Cocoa 方法,这些方法根据需要保留它们,并在不再需要它们时释放它们。问题是,当 block 达到引用计数 0 并被释放时,我需要释放与该 block 关联的其他资源,因此我需要一种方法来设置发生这种情况时的回调。

对于普通对象,我只需子类化并重写 dealloc()。我听说 block 也是对象 - 是否有可以子类化的 Block 类?或者是否有其他方法可以在 block 的释放和/或解除分配上连接函数?

谢谢。

[1] http://clang.llvm.org/docs/Block-ABI-Apple.html

最佳答案

您可以使用Obj-C Associated Objects API将对象实例与 block 实例关联起来。当 block 被释放时,关联的对象(如果在其他地方没有访问它)将被释放。

使用关联对象的-dealloc方法来执行任何所需的资源清理等。

关于objective-c - block 被释放时的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23879435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com