AFAIK, __block
jest używany, gdy zmieniasz wewnątrz bloku adres, na który wskazuje zmienna (zadeklarowana poza blokiem).Czy ARC powie mi, kiedy muszę użyć __block?
Ale co się stanie, jeśli zmienię wartość wskazywaną przez zmienną, ale wskaźnik pozostanie taki sam? Na przykład, jeśli mam NSMutableArray *array
i czy robię tylko [array addObject:object]
wewnątrz bloku? W tym przypadku nie zmieniam wskaźnika array
, ale zmieniam wartość, na którą wskazuje. Czy nadal muszę używać __block
w zadeklarowaniu NSMutableArray *array
?
Co o optymalizacji kompilator ? '__block' może podpowiedzieć, że obiekt nigdy się nie zmienia, a jeśli narysowano" NSArray ", kolejne wywołania pojemności mogły być błędne. – Dani
'__block' wskazuje, że zmienna może się zmienić. Niezależnie od tego, czy zmienna to '__block' czy const-copy (jak jest domyślna), wywołanie metody na obiekcie nie będzie miało wpływu. – bbum
Ale co się stanie, jeśli zmienna (NSArray *) jest właściwością własną? Czy __block należy dodać? – Amnysia