我对如何在块内更改实例变量感到非常困惑。

接口(interface)文件(.h):

@interface TPFavoritesViewController : UIViewController {
    bool refreshing;
}

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

您可能会猜到,当我尝试更改该块内部的刷新ivar时,会收到一个保留周期警告。我如何做到这一点而又不会出错?

最佳答案

您对refreshing的分配是对self的隐式引用,它是以下各项的简写:

self->refreshing = YES;

因此出现周期警告。更改为:
temp_self->refreshing = YES;

10-08 15:42