retain-cycle
Używanie słabego self w funkcji asynchronicznej wysyłania
Czytałem wiele postów o używaniu __weak self wewnątrz dispatch_async, a teraz jestem trochę zdezorientowany.
Jeśli mam:
se ... self. Ponieważ czytałem, że w niektórych przypadkach dispatch_async nie trzeba __weak self.
Zobacz ostatni komentarz tutaj
Słabe odniesienie do celu NSTimer, aby zapobiec cyklowi zatrzymania
Używam NSTimer w ten sposób:
timer = [NSTimer scheduledTimerWithTimeInterval:30.0f target:self selector:@selector(tick) use ... alidate];
}
Jest to realna opcja? Widziałem wiele sposobów, jak ludzie radzą sobie z tym problemem, ale nie widziałem tego.
Dogłębne zrozumienie cyklu
Powiedzmy, że mamy trzy obiekty: dziadka, rodzica i dziecko. Dziadkowie zatrzymują rodzica, rodzic zatrzymuje dziecko, a dziecko zatrzymuje rodzica. Dziadek uwalnia rodzica.
Co się stanie w tym przypadku ?
Odnosi się do słabego JA wewnątrz zagnieżdżonego bloku
Załóżmy, że już stworzyłem słabą jaźń używając
__weak typeof(self) weakSelf = self;
[self doABlockOperation:^{
...
... eak typeof(self) weakerSelf = weakSelf;
[weakSelf doAnotherBlockOperation:^{
[weakerSelf doSomething];
}
rekurencyjny blok i zachowuje cykle w łuku
EDIT2:
Nie. Sugerowana odpowiedź dotyczy połączeń asynchronicznych . Chcę i potrzebuję wywołań synchronicznych, jak w norma ...
Zwróć uwagę na te więc pytania {[55] } dotyczą przechwytywania self a te więc pytania nie mają zadowalającej odpowiedzi.
Czy taniec weakSelf / strongSelf jest naprawdę konieczny, gdy odwołujemy się do jaźni wewnątrz nie zachowanego dopełnienia, zwanego z kontrolera UIViewController?
Powiedzmy, że mam następującą metodę wewnątrz UIViewController podklasy:
- (void)makeAsyncNetworkCall
{
[self.networkSe ... }
});
}];
}
Ale uważam to za niesłychanie brzydkie i chciałbym tego uniknąć, jeśli nie jest to konieczne.
Core Data-break zachowuje cykl kontekstu nadrzędnego
Załóżmy, że mamy dwa podmioty w podstawowym modelu danych: działy i pracowników.
Dział ma stosunek jeden do wielu pracowników ... edObjects)
[rootContext refreshObject:mo mergeChanges:NO];
}];
}];
Górny nie dealokuje obiektów, dolny tak.
Czy musimy używać słabego JA wewnątrz UIAnimationBlocks w ARC?
Czy musimy używać _ _ weak self wewnątrz bloków UIAnimation, jak podano poniżej? Czy stworzy problem z cyklem, jeśli nie okre ... [self doSomething];
}];
Czy powinniśmy używać słabego ja?
Jak naprawić " Przechwytywanie 'bloku' mocno w tym bloku prawdopodobnie doprowadzi do cyklu zatrzymania"
Pracuję nad tym kodem, który wykonuje długą asynchroniczną operację w sieci i po jej zakończeniu uruchamia blok zakończenia, ... turing 'completionBlock' strongly in this block is likely to lead to a retain cycle
Jak mogę naprawić to?
Dzięki
Nicola