我正在通过 Obj-C 运行时从 C 调用 Cocoa。
我能够使用这里的信息创建 block 对象[1],并将它们作为参数传递给 Cocoa 方法,这些方法根据需要保留它们,并在不再需要它们时释放它们。问题是,当 block 达到引用计数 0 并被释放时,我需要释放与该 block 关联的其他资源,因此我需要一种方法来设置发生这种情况时的回调。
对于普通对象,我只需子类化并重写 dealloc()。我听说 block 也是对象 - 是否有可以子类化的 Block 类?或者是否有其他方法可以在 block 的释放和/或解除分配上连接函数?
谢谢。
最佳答案
您可以使用Obj-C Associated Objects API将对象实例与 block 实例关联起来。当 block 被释放时,关联的对象(如果在其他地方没有访问它)将被释放。
使用关联对象的-dealloc
方法来执行任何所需的资源清理等。
关于objective-c - block 被释放时的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23879435/