2014-10-15 6 views
2

을 구현하기 위해 기존의 NSCoding 방법을 사용하지 않도록 모든 이유는 copyWithZone의 구현한다는 NSCoding를 구현하는 클래스를 제공하는 이유가NSCopying

-(instancetype)copyWithZone:(NSZone *)zone{ 
    return [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self]]; 
} 
+0

'encodeWithCoder :'는 무겁거나 쉽게 만들거나 재 작성해야하는 것을 건너 뛸 수 있습니다. 덕분에 –

답변

1

그냥 효율 - 인코딩/디코딩 비용 및 총 메모리 풋 프린트가 포함됩니다.

인스턴스 변수가 4 개인 개체가 있다고 가정합니다. 사용자 정의 copy을 구현하는 경우 해당 객체의 인스턴스 하나를 추가로 할당 한 다음 네 개의 인스턴스 변수 모두에 소유권을 부여합니다.

인코딩 및 디코딩을하면 양방향 직렬화의 처리 비용이 생기며 각 인스턴스 변수의 새로운 사본이 생성됩니다.

+0

. 내 경우에는 이러한 특정 클래스의 효율성에 대해 걱정하지 않아도되며, 매우 가볍습니다. 큰 불변의 배열 같은 것들을 가진 큰 그래프를 가지고 있다면 나는 손으로 그것을 할 것입니다. – Jon