【发布时间】:2012-05-03 20:33:15
【问题描述】:
当我的网络服务关闭并与我的服务器通信时,我正在存储我的块。因此我使用[myBlock copy] 来保留对我的块的引用。
获得数据并执行块后,我是调用[myBlock release],还是使用Block_release(myBlock)?我可以找到两者的参考。
【问题讨论】:
标签: objective-c ios memory-management objective-c-blocks
当我的网络服务关闭并与我的服务器通信时,我正在存储我的块。因此我使用[myBlock copy] 来保留对我的块的引用。
获得数据并执行块后,我是调用[myBlock release],还是使用Block_release(myBlock)?我可以找到两者的参考。
【问题讨论】:
标签: objective-c ios memory-management objective-c-blocks
Block_release() 适用于仅在 C 中使用块而不是 Objective-C 的情况。
在使用 Objective-C 时,您可以使用 release 和 copy 方法使您的代码看起来和感觉更像它周围的其他 ObjC。
我想他们都做同样的事情,而且 objc 方法只是对 Block_release() 调用的包装。
【讨论】:
作为it's explained in reference 复制/释放之和必须为零。因此,如果您使用的是 Objective-C,您可以调用[block copy],因此可以调用[block release]。
如果你使用 C,你应该使用 Block_copy() 和 Block_release()。
正如 Jasarien 所写,它们可能正在做同样的事情,因此您可以互换使用它们。然而,保持约定一致很重要——所以当你使用[block copy]时,你宁愿使用[block release]而不是Block_release()
【讨论】: