-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 に答える