1

インストルメントを使用して、ナビゲーション コントローラーからポップしたときに View Controller が dealloc を呼び出さない理由を発見しようとしています。割り当てを確認したところ、View Controller をポップすると、RefCt が 2 のままであることがわかりました。retain<->release メッセージをすべて調べてみたところ、おかしな割り当てのグループが 1 つ見つかりました。これらのメッセージは 30 あり、16 の保持と 14 のリリースがあります。これは私の問題ですか?これらの呼び出しは何をしているのですか? どこかのブロックに自分自身を保持していると思います..?

Retain  __copy_helper_block_335
Retain  __copy_helper_block_361
Retain  __copy_helper_block_391
Retain  __copy_helper_block_387
Retain  __copy_helper_block_91
Retain  __copy_helper_block_84
Retain  __copy_helper_block_1797
Retain  __copy_helper_block_2139
Retain  __copy_helper_block_2143
Retain  __copy_helper_block_1647
Retain  __copy_helper_block_2139
Retain  __copy_helper_block_2143
Retain  __copy_helper_block_1678
Retain  __copy_helper_block_2139
Retain  __copy_helper_block_2143
Retain  __copy_helper_block_57
Release __destroy_helper_block_392
Release __destroy_helper_block_336
Release __destroy_helper_block_388
Release __destroy_helper_block_92
Release __destroy_helper_block_85
Release __destroy_helper_block_2140
Release __destroy_helper_block_2144
Release __destroy_helper_block_1648
Release __destroy_helper_block_2140
Release __destroy_helper_block_2144
Release __destroy_helper_block_1679
Release __destroy_helper_block_2140
Release __destroy_helper_block_2144
Release __destroy_helper_block_58

ビュー コントローラーが dealloc を呼び出さないことに関する他の多くの質問を読みましたが、RefCt を 0 にするのにまだ問題があります。 . ただし、__weak の代わりに self を使用する場所もあります ([GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) など)。ここでweakSelfを使用する必要がありますか?

- (void) setupInvitationHandler {
    [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {

        ( ... )

        GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite];
        mmvc.matchmakerDelegate = [self.navigationController.viewControllers objectAtIndex:0];
        [self presentViewController:mmvc animated:YES completion:^{
            [self.navigationController popToRootViewControllerAnimated:NO];
        }];
    }];
}
4

0 に答える 0