2010-06-08 4 views

답변

0

이 컨텍스트에서 해시가 어떤 의미인지 혼란 스러울 수 있습니다. 해시는 코코아 컬렉션 클래스가 성능을 향상시키기 위해 내부적으로 사용하는 숫자입니다. NSObject는이 방법을 구현하므로 배열이나 사전에서 객체를 비교/검색하는 동안 더 나은 의미있는 해시 알고리즘으로 인해 성능이 개선되지 않는 한이를 무시하지 않아도됩니다.

해시 값을 디스크에 캐시해야하는 개체가 없으므로이 주석은 Apple 클래스에서 반환 한 구체적인 해시 값에 의존해서는 안된다는 것을 의미합니다. minor 구현 세부 사항으로 간주됩니다.

NSDictionary는 값을 유지하지만 키를 복사합니다. 따라서 미리보기를 값으로 유지하려면 아무 것도 할 필요가 없지만보기를 키로 사용하려면 -copyWithZone : 메소드를 구현해야합니다.

Apple의 설명서에서 더 자세히 읽으십시오.

+0

예, 원래 질문에서 지정하지 않았지만 뷰를 키로 사용하려고합니다. 기본적으로 여러 종류의 뷰에 대한 메타 데이터를 유지하려고하며 객체가있는 메타 데이터를 조회 할 수 있어야합니다. 당신은 반드시 하위 클래스를 만들고 copyWithZone : 메서드를 오버라이드해야한다고 말하고 있습니까? 다른 방법이 없습니까? –

+0

@Daniel Weber : NSDictionary를 사용하려면 네, NSDictionary의 동작을 받아 들여야합니다. 그래도 더 나은 질문은 뷰에 대한 메타 데이터를 유지하려고하는 이유입니다. 이러한 경우 일반적으로 뷰는 모델 객체를 나타내는 것이므로 메타 데이터를 모델 계층에 저장하는 것이 더 적합합니다. – Chuck

+0

네, 그렇게 넣으면 이해가되지 않는 것 같습니다. 그러나 인터페이스 빌더 유형의 프로그램에서 작업 중이며 다양한 표준 컨트롤 (버튼, 텍스트 필드 등)을 많이 사용하고 있습니다. 내 프로그램에서 클릭하면 해당 컨트롤에 대한 일부 사용자 지정 속성에 액세스 할 수 있어야합니다. 나는 정말로 필요한 모든 것이 두 개의 여분의 문자열과 int 속성이기 때문에 모든 것을 서브 클래 싱하는 것을 피하려고 노력했다. 어떤 행동을 다시 정의하지는 않는다. 서브 클래 싱이 실제로 가장 좋은 방법입니까? –

관련 문제