Аргументы для метода копирования в сравнении с конструктором копирования в Objective-C - PullRequest
2 голосов
/ 04 октября 2011

Я относительно новичок в мире Objective-C и у меня есть класс, который я написал, к которому я хотел бы добавить возможность создания копии.

Исходя из Java, язнаю, что я мог бы написать конструктор копирования или метод клонирования, причем последний обычно не рекомендуется .Однако Objective-C - это другой язык, и прежде чем я продолжу, я хотел бы понять аргументы метода копирования в сравнении с конструктором копирования в Objective-C.Какой подход наиболее часто используется?

Ответы [ 2 ]

4 голосов
/ 04 октября 2011

Рекомендуемый способ добавить возможность копирования объектов - реализовать протокол NSCopying . Многие базовые классы также реализуют NSCopying.

Обратитесь к этому ответу для получения дополнительной информации: Внедрение NSCopying

1 голос
/ 04 октября 2011

Использование: -(id)copyWithZone:(NSZone*)zone, которое является частью NSCopying protocol

Пример:

в .ч:

@interface MyClass : NSObject <NSCopying>

дюйм. М

-(id)copyWithZone:(NSZone*)zone {
    MyClass *copy = [[[self class] allocWithZone: zone] init];
    copy.user = self.user;
    copy.password = self.password;
//    etc

    return copy;
}   
...