如何释放一个块

时间:2012-04-23 08:13:24

标签: objective-c ios memory-management objective-c-blocks

当我的网络服务关闭并与我的服务器通话时,我正在存储我的块。因此,我使用[myBlock copy]来保留对我的块的引用。

获得数据并执行阻止后,是否可以拨打[myBlock release],还是使用Block_release(myBlock)?我可以找到两者的参考。

2 个答案:

答案 0 :(得分:9)

当你只在C中使用块而不是Objective-C时,

Block_release()可用。

使用Objective-C时,您可以使用releasecopy方法使代码看起来更像是围绕它的其余ObjC。

我想他们都做了完全相同的事情,并且objc方法只是调用Block_release()的包装器。

答案 1 :(得分:5)

作为it's explained in reference复制/释放的总和必须等于零。因此,如果您使用的是Objective-C,则可以调用[block copy],然后调用[block release]

如果您使用的是C,则应使用Block_copy()Block_release()

正如Jasarien所写,他们可能也在做同样的事情,所以你可以互换使用它们。但是,保持约定一致非常重要 - 因此当您使用[block copy]时,您宁愿使用[block release]而不是Block_release()