7

ブロック内のインスタンス変数を変更する方法について、私はかなり混乱しています。

インターフェイス ファイル (.h):

@interface TPFavoritesViewController : UIViewController {
    bool refreshing;
}

実装:

__weak TPFavoritesViewController *temp_self = self;
refreshing = NO;
[myTableView addPullToRefreshWithActionHandler:^{
    refreshing = YES;
    [temp_self refresh];
}];

ご想像のとおり、ブロック内のリフレッシュ ivar を変更しようとすると、保持サイクルの警告が表示されます。エラーを発生させずにこれを行うにはどうすればよいですか?

4

1 に答える 1

6

への割り当てrefreshingは、への暗黙の参照selfです。これは、次の省略形です。

self->refreshing = YES;

したがって、サイクル警告。次のように変更します。

temp_self->refreshing = YES;
于 2012-08-01T04:43:10.753 に答える