-1

在使用块时仍然试图掌握保留周期的窍门。我的问题是.. 以下哪一项(如果有)会导致保留周期?

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];
   }];
}];

谢谢!

4

1 回答 1

1

从表面上看,他们都没有。导致块保留周期的事情是,例如,当您将块交给的东西持续存在并保留它(随着时间的推移)并且您随着时间的推移保留该东西,并且块提到了您 - 并且没有明显的证据表明这会在这里发生。

换句话说,这与总是导致保留循环的基本事物没有什么不同:A 保留 B 但 B 保留 A。但是在您的代码中,我没有看到任何人保留任何人的证据。

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

听起来你只是想多了。

于 2014-09-02T02:18:38.080 回答