2010-04-04 15 views
12

Wiem, że jest to potrzebne, jeśli obiekt będzie używany jako klucz w NSDictionary. Czy są jakieś inne czasy, które wymagają NSCopying?Kiedy potrzebne jest NSCopying?

Jeśli myślę, że nie potrzebuję obiektów mojego modelu, aby dostosować się do NSCopying, to czy jestem prawdopodobnie w błędzie?

Odpowiedz

3

Po przekazaniu do właściwości kopiowania lub innej metody udokumentowanej jako kopiowanie jej argumentu.

4

NSCopying ma dość szerokie zastosowanie. Za każdym razem, gdy obiekt jest właścicielem czegoś, czego nie powinien współdzielić z innymi obiektami, potrzebna jest kopia. Zmodyfikowane obiekty często muszą być kopiowane, ale może być potrzebne NSMutableCopying zamiast NSCopying.

7

Pomyśl o protokole NSCopying jako o procedurze klonowania w wersji C-C. Jeśli osoba dzwoniąca miała sklonować twój obiekt, jakie zachowanie byś chciał? Jeśli twój obiekt składa się wyłącznie z typów pierwotnych, nie musisz się tym martwić. Ale jeśli masz jakieś złożone typy jako członków, możesz je sklonować/skopiować, zamiast przekazywać proste odniesienia do nich.