NSCopying, copyWithZone и NSDictionary - PullRequest
       20

NSCopying, copyWithZone и NSDictionary

1 голос
/ 26 сентября 2011

Во-первых, я хотел бы получить подтверждение того, что я правильно понял NSCopying ...

Чтобы использовать простой подкласс NSObject в качестве ключа в NSDictionary, я должен иметь его для реализации протокола NSCopying.В методе copyWithZone копируемого экземпляра я должен выделить / инициализировать новый экземпляр моего класса, установить его свойства идентичными скопированному экземпляру и вернуть его.

Во-вторых, почему NSDictionary использует копию экземплярадобавил к нему, а не сам экземпляр?

Ответы [ 2 ]

3 голосов
/ 26 сентября 2011

Подклассу не нужно реализовывать NSCopying, если это объект, ключ обычно должен быть NSString s, которые копируются.

1 голос
/ 26 сентября 2011
  1. Необходимо реализовать протокол NSCopying для каждого пользовательского класса, если вы хотите сделать их копируемыми
  2. Он должен использовать копию, потому что если вы измените объект, содержащийся в исходном словаре, это изменение не повлияет на копию
...