Collection 공식 문서

1692 단어
  •   NSDictionary  key :
    

  • a) Keys는 NSCopying 프로토콜을 실행해야 합니다.구성원을 추가하는 방법은 키 하나하나를 직접 추가하는 것이 아니라 키 하나하나를 복사하고 복사 후 대상을 디렉터리에 추가합니다.dictionary에 추가한 후, 자체 키스의copy 대상은 수정할 수 없습니다.b)Keys는hash와isEqual 방법을 실현해야 한다. dictionary는hashTable를 사용하여 저장소를 구성하고 빠른 접근을 하기 때문이다.그리고 디렉터리의 고성능은hash방법에 심각하게 의존한다.c) NSCopying 프로토콜을 사용하고 Hash, isEqual 방법을 계승한 모든 대상을 사용할 수 있지만 Large Object를 키로 사용하지 않는 것이 좋다. 예를 들어 NSImage 등이다. 이렇게 하면 성능을 손상시킬 수 있기 때문이다.
  •   Set object NSObject hash isEqual 。 set ,hash , set 。
    
  •   Set objects copy ( YES initWithSet:copyItems:).  set 。
    
  •    copy : copy copy。 copy copy, collection ( )。 copy collection 。
    

  • a) 얕은 copy얕은copy를 만들면 대상은retain 정보를 받고 바늘은 새로운collection에 복사됩니다.b) 깊이 copy두 가지 방법으로 깊이 copy:i. initWithArray:copyItems:YES 매개 변수를 두 번째 매개 변수로 전달할 수 있습니다.만약 이런 방식으로 깊이 copy를 진행한다면, 모든 object는 copyWithZone: 방법을 보낼 것이다.Objects에서 NSCopying 프로토콜을 구현하면 딥 코피 객체가 수행됩니다.NSCopying 프로토콜이 구현되지 않으면 오류가 발생합니다.CopyWithZone은 한 레이어의 copy만 실행합니다.ii. 만약에 진정한 깊은 코피가 필요하다면, 예를 들어 2차원 그룹이 있으면,archive 다음에 unarchive 그 collection을 진행하여 모든 내용이 NSCoding 프로토콜을 실현할 수 있다.예를 들어 NSArray *trueDeepCopyArray = [NSKeyedUnarchiver unarchiver ObjectWithData: [NSKeyedArchiver archivedDataWithRootObject:oldArray];
  •    Copy :
    

  • a) CopyWithZone: 표층 immutable을 만드는 방법.심층 level 원상 유지.b) InitWithArray:copyItems: NO를 전송하면 표면 level의 가변성을 얻을 수 있습니다.내부의 가변성은 변하지 않는다.c) InitWithArray:copyItems: YES를 전송하면 표면 level의 가변성을 얻을 수 있습니다.다음 level은 변할 수 없습니다. 더 깊은 가변성은 변하지 않습니다.d) Archiving 및 Unarchiving은 모든 level의 가변성을 유지합니다.

    좋은 웹페이지 즐겨찾기