0

ブロック呼び出しでView Controllerを作成しようとしていますが、ブロックから戻るとオブジェクトがnilになります。修正方法は?

私のブロック宣言:

typedef void (^GetViewController)(UIViewController *viewController, int index);

VC が必要な場合の呼び出しブロック (現在、viewController は nil です)

self.getViewController(viewController, index);

別のクラスで VC を設定する

self.myController.getViewController = ^(UIViewController *viewController, int index)
{
    switch (index) {
        case Option1:
            viewController = [[Option1VC alloc] init];
            break;
        case Option2:
            viewController = [[Option1VC alloc] init];
            break;
        default:
            break;
    }
//at this point VC is created
};
4

3 に答える 3

0

変数に __block ストレージ タイプ修飾子を使用して、ブロック内の変数を変更できます。この修飾子がない場合、変数はブロックのスコープ内で読み取り専用になります。これにより、パラメーターを値で渡すことを回避できます。

Apple の __block 変数のドキュメント

于 2013-10-24T17:14:35.527 に答える