0

ARC では、A が B への強い参照を保持し、B が A への強い参照を保持している場合、保持サイクルが発生します。

以下のコードも保持サイクルを作成しますか?

    __weak MyClass *weakSelf = self;
    [self doSomething:^{

        weakSelf.someVariable = YES;

        [weakSelf doSomething:^{

            weakSelf.someVariable = YES;
        }];

    }];
4

2 に答える 2

2

ARC では、weakSelf ポインターがコピーされますが、弱いため、ポインターのコピーによって保持カウントが増加することはありません。いいえ、保持サイクルは作成されません。

于 2013-04-05T19:06:47.607 に答える
2

いいえ、そうではありません。実際、オブジェクトを保持せず、何らかの理由でMyClassオブジェクトの割り当てが解除された後にブロックが呼び出されると、ランタイム クラッシュが発生します。

于 2013-04-05T19:07:39.127 に答える