我什么时候需要复制一个块?

时间:2012-01-19 07:54:23

标签: objective-c objective-c-blocks

我真的不知道什么时候需要复制一个块 文档说when you expect the block to be used after destruction of the scope within which it was declared

例如,当我将它们用作回调方法时,是否需要复制它?副本我的意思是为我的块创建一个复制属性并在那里保存块或以某种方式发送一个复制消息。当下载或类似的内容完成时,范围可能会被破坏。那么在这种情况下我需要复制块吗?我可以用这种方式创建循环引用吗?

现在我有一个下载器类(仅测试块,对我来说太危险了)使用完成块,当我复制块时,创建块的视图控制器和下载器类不是释放。

你能给我一些很好的例子,特别是用它们来完成文件下载等异步操作吗?

感谢。

1 个答案:

答案 0 :(得分:6)

大多数时候采用回调的方法会为你复制块

当你需要在Objective-C

中自己复制一个块时,我可以想到两种情况
  • 从函数
  • 返回块时
  • 当你将一个块保存到一个类变量时(这是在你实现一个稍后接受回调的方法时发生的情况)。

由于这些是块在使用或处理之前会超出范围的时间。