Utilizzando il modello weakSelf/strongSelf
per evitare di creare una conservano ciclo in blocchi, questo codice è piuttosto comune:Uso typeof (auto) in blocchi Objective-C per dichiarare un riferimento forte
typeof(self) __weak weakSelf = self;
void (^block)() = ^{
typeof(weakSelf) strongSelf = weakSelf;
// ...more code...
};
La domanda è, cambia il secondo typeof(weakSelf)
a typeof(self)
causa self
da catturare nel blocco?
Ad esempio:
typeof(self) __weak weakSelf = self;
void (^block)() = ^{
typeof(self) strongSelf = weakSelf; // does using typeof(self) here end up capturing self?
// ...more code...
};
Se sé non viene catturata, non v'è alcun motivo per preferire un modo o l'altro?
Conosci un modo per convertirlo in forte? Ho provato __strong typeof (weakSelf) strongSelf = weakSelf; e non ha funzionato, è stato deallocato perché deve essere ancora debole. Il motivo per cui lo chiedo è che non sto usando me stesso, ne ho bisogno per un blocco, ma come soluzione alternativa posso solo definire il tipo completo. – malhal