2014-09-11 15 views
1

Apple 설명서에 따르면 setObject:forKey: 메서드를 통해 NSMutableDictionary에 개체를 추가하면 해당 개체에 대한 강력한 참조가 유지됩니다.NSMutableDictionary는 'setValue : forKey :'를 통해 입력 한 객체에 대한 강력한 참조를 유지합니까?

하지만 setValue:forKey: 방법 은요? 문서는이 메서드를 통해 추가 된 객체에 대한 참조의 종류에 대해서는 아무 것도 말하지 않습니다. 다른 것과 동일합니까? 사전은이 방법을 통해 추가 된 객체에 대한 강력한 참조를 유지합니까?

+0

키의 값을 설정 하시겠습니까? 배열에? 그것은 심지어 불가능합니다. – Fogmeister

+0

NSArray는 키 - 값 코딩을 준수하기 때문에 그렇습니다. – wjl

+0

죄송합니다. NSMutableDictionary를 의미했습니다. 내 실수. 수정 중 ... – adam10603

답변

4

NSMutableDictionary (및 NSMutableArray)은 추가 된 방법에 상관없이 추가되는 모든 개체에 대한 강력한 참조를 유지합니다.

+1

NSMutableDictionary에 대해서도 마찬가지입니다. –

3

NSMutableArrayNSArray 포함 된 개체에 대한 강력한 참조를 유지하십시오. 이러한 개체는 리터럴 생성자 @[myObject, myObject2, ...], 이니셜 라이저 NSArray 또는 추가/삽입 메서드 NSMutableArray을 사용하여 추가됩니다.

지도처럼 키/값 저장을 찾으려면 NSDictionary/NSMutableDictionary을 대신 사용하고 싶습니다. 당신이 말하는 setValue:forKey: 방법은 키 - 값 코딩 준수를위한 것입니다.

또한 NSDictionaryNSMutableDictionary은 값 개체에 대한 강력한 참조를 유지하고 키에 대한 복사본 참조를 유지합니다 (NSCopying 프로토콜을 준수해야 함).

+1

"NSMutableDictionary"는 미안합니다. 실수로'NSMutableArray'를 작성했지만 수정했습니다. 하지만 어쨌든 고마워 :) – adam10603