问题
I am quite confused about how to change an instance variable inside of a block.
The interface file (.h):
@interface TPFavoritesViewController : UIViewController {
bool refreshing;
}
The implementation:
__weak TPFavoritesViewController *temp_self = self;
refreshing = NO;
[myTableView addPullToRefreshWithActionHandler:^{
refreshing = YES;
[temp_self refresh];
}];
As you might guess, I get a retain cycle warning when I try to change the refreshing ivar inside of the block. How would I do this without getting an error?
回答1:
Your assignment to refreshing
is an implicit reference to self
, it is shorthand for:
self->refreshing = YES;
hence the cycle warning. Change it to:
temp_self->refreshing = YES;
来源:https://stackoverflow.com/questions/11752500/changing-an-instance-variable-in-a-block