za każdym razem muszę użyć globalnego var lub właściwość wewnątrz bloku jak ten:Unikanie „Przechwytywanie siebie mocno w tym bloku może doprowadzić do zatrzymania cyklu” wiadomości
self.save = ^(){
if (isItSaving == NO) {
[self saveMyFile];
}
};
mam do przerobienia to jak
BOOL *iis = isItSaving;
id myself = self;
self.save = ^(){
if (iis == NO) {
[myself saveMyFile];
}
};
lub Xcode będzie narzekać „przechwytywanie siebie mocno w tym bloku może doprowadzić do zatrzymania cyklu ...
zarzuca nawet o zmiennych BOOL?
Redeclaring wszystko przed blok wydaje się być kiepskim rozwiązaniem.
Czy to prawda? Czy istnieje elegancki sposób?
To jest brzydkie. Używam ARC.
człowiek, to jest brzydkie jak diabli. Konieczność redeclare wszystko ... dzięki. – SpaceDog
@MarkAmery Tak, clang łapie coraz więcej problemów. I prawdą jest, że czas życia otaczającego obiektu powinien zostać przedłużony przynajmniej do momentu, aż blok się skończy. Edycja ... –
@NikolaiRuhe * "czas życia otaczającego obiektu powinien zostać przedłużony przynajmniej do momentu, gdy blok się skończy" * - miłe, nie zauważyłem z początku żadnego powodu, dla którego stworzenie silnego odniesienia do "siebie" w bloku byłoby lepiej używać '__unsafe_unretained', ale sama fraza czyni to niesamowicie czystym. Może nawet warto porównać dwa podejścia w twojej odpowiedzi, jeśli chcesz. –