忍者ブログ

佐崎司と愉快な仲間達

ゲーム、アニメ、CG、iOS開発など思いついたことを記事にしています。 管理人が3人いますので、記事にまとまりはないと思います。 iPhoneアプリのレビュー依頼も受け付けています。

MRCからARC移行する際に気をつけること

わか

iOSにてMRCのコードをARCに移行する際に気をつけておかないと循環参照が発生することがあります。私が遭遇した循環参照を記載します。

NSBlockOperationにてバックグラウンドタスクを生成する際のキャンセル処理の実装方法

・MRC
    __block NSBlockOperation *opr = [[NSBlockOperation alloc] init];
    [opr addExecutionBlock:^{
        if (opr.isCancelled == YES) {
            ...
        }
    }];
・ARC
    NSBlockOperation *opr = [[NSBlockOperation alloc] init];
    __weak NSBlockOperation *weakOperation = opr;
    [opr addExecutionBlock:^{
        if (weakOperation.isCancelled == YES) {
            ...
        }
    }];

ARCに移行した際に上記MRCの記載方法のままだと循環参照が発生し、いつまでたっても解放されない事態になります。気をつけよう。

拍手[0回]

PR