Znalazłem nieparzystą linię kodu w projekcie REActivityViewController na GitHub i nie mogę tego zrozumieć. Wydaje się, że unika się rzucania wartości do dokładnej klasy, w której została zadeklarowana, ale nie wiem, dlaczego byłaby taka konieczność. Zastanawiam się, czy jest to jakoś ważne dla dziedziczenia.Wyjaśnienie słabego przypisania siebie za pomocą __typeof
Czy ktoś może wyjaśnić, dlaczego tak się stało?
__typeof(&*self) __weak weakSelf = self;
bym to bardziej oczywiste, deklarując to w ten sposób ...
id __weak weakSelf = self;
I wtedy w bloku mogę redeclare go jako silnego odniesienia.
REPocketActivity* __strong strongSelf = (REPocketActivity*)weakSelf;
Wtedy użyłbym strongSelf
w bloku. Kiedy wychodzi poza zakres, bezpiecznie odrzuca silne referencje.
Gabriela, to wydaje się rozsądnym wyjaśnieniem. Chciałbym mieć taką składnię Google, aby uzyskać jakiś kontekst. – Brennan