6
Sono abbastanza confuso su come modificare una variabile di istanza all'interno di un blocco.Modifica di una variabile di istanza in un blocco
Il file di interfaccia (h):
@interface TPFavoritesViewController : UIViewController {
bool refreshing;
}
L'implementazione:
__weak TPFavoritesViewController *temp_self = self;
refreshing = NO;
[myTableView addPullToRefreshWithActionHandler:^{
refreshing = YES;
[temp_self refresh];
}];
Come si può immaginare, ho un avvertimento mantenere ciclo quando provo a cambiare l'Ivar rinfrescante interno il blocco. Come farei questo senza ottenere un errore?
Non crea solo con questo codice. Ricevo il seguente errore: non è consentito il dereferenziamento di un __bordo a causa di un possibile valore nullo causato da una condizione di competizione, assegnarlo prima a una variabile forte. Penso di averlo funzionato aggiungendo questo: __strong TPRideListView * strong_self = temp_self; strong_self-> refreshing = YES; –
Attento; il dereferenziamento di un puntatore debole può causare incidenti. Meglio creare un puntatore forte da quello debole all'interno del blocco, controllare che sia zero e usarlo. –
@KeiranPaster - scuse Ho perso il secondo avvertimento; se il tuo codice tiene a bada gli avvertimenti, lo fai funzionare * purché * il tuo oggetto rimanga intorno (ad esempio, 'self' è valido); il codice non si occupa della possibilità di un valore 'nil'. Presumo tu sappia che lo è, se non lo fai ... – CRD