哪一个会导致保留周期? (obj-c,示例代码)

时间:2014-09-02 02:13:21

标签: ios objective-c memory-management retain-cycle

在使用块时仍然试图获得保留周期的挂起。 我的问题是......以下哪一项(如果有的话)会导致保留周期?

1

[self.someProperty runSomeBlock:^{
   [self.someOtherProperty doSomething];
}];

2

[self.someProperty runSomeBlock:^{
   [self doSomething];
}];

3

[self.someProperty runSomeBlock:^{
   [someObject runAnotherBlock:^{
      [self.someProperty doSomething];
   }];
}];

4

[self.someProperty runSomeBlock:^{
   [someObject runAnotherBlock:^{
      [self.someOtherProperty doSomething];
   }];
}];

谢谢!

1 个答案:

答案 0 :(得分:1)

从表面来看,他们都不是。导致具有块的保留循环的事物例如是当你交出的东西坚持并保留它(随着时间的推移)而你随着时间的推移保留了那个东西,并且该块提到了你 - 并且没有明显的证据证明这将会发生在这里。

换句话说,它与总是导致保留周期的基本事物没有什么不同:A保留B但B保留A.但在您的代码中,我看不到任何人保留任何人的证据。< / p>

在任何情况下,如果所有对象只是在交给他们时立即执行他们的块,那么首先没有什么可担心的,因为它只有持久性那就是问题。

听起来你只是过度思考这个问题。