programing

NSMutableDictionary에서 setObject:forKey:와 setValue:forKey:의 차이점은 무엇입니까?

muds 2023. 6. 15. 22:09
반응형

NSMutableDictionary에서 setObject:forKey:와 setValue:forKey:의 차이점은 무엇입니까?

설명서를 보면 큰 차이가 거의 없습니다."value"와 "object" 모두 유형 ID이므로 모든 개체가 될 수 있습니다.키는 한 번 문자열이고 다른 경우에는 id입니다.그들 중 한 명은 물건을 가지고 있는 것처럼 보이고, 다른 한 명은 그렇지 않습니다.물론이지.어떤 것이 어떤 경우를 위한 것입니까?

setValue:forKey:NSKeyValueCoding 프로토콜의 일부로, 인터페이스 빌더와 같은 개체 속성에 액세스할 수 있습니다. setValue:forKey:이외의 클래스에서 구현됩니다.NSDictionary.

setObject:forKey:이라NSMutableDictionary's존재 이유서명은 setValue:forKey:와 매우 유사하지만 더 일반적입니다(예: 모든 키 유형).서명이 매우 유사한 것은 다소 우연의 일치입니다.

혼란을 가중시키는 것은 NSMutableDictionary의 구현이setValue:forKey:와 동등합니다.setObject:forKey:대개의 경우에다른 수업에서는setValue:forKey:멤버 변수를 변경합니다.NSMutableDictionary키 앞에 '@' 문자를 붙이지 않는 한 사전 항목을 변경합니다. 이 경우 구성원 변수를 수정합니다.

간단히 말해서, 사전 키와 값으로 작업해야 할 때와 KVP를 처리해야 하는 드문 경우에 사용하십시오.

편집: 그리고 아, 이것은 이전에 질문을 받고 대답한 것 같습니다: objectForKey와 valueForKey의 차이?

또 다른 차이점은 0의 값을 지정하면setValue:forKey:키가 있는 경우 사전에서 키를 제거하고, 그렇지 않으면 아무 것도 하지 않습니다.하지만 만약 당신이 0의 값을 준다면,setObject:forKey:예외가 발생합니다.

-setValue:forKey: 그냥 보내기-setObject:forKey:값이 다음과 같은 경우를 제외하고 수신기에nil이 경우에는.-removeObjectForKey.

아주 간단합니다.

anObject : 키의 값입니다.개체가 다음에 추가되기 전에 유지 메시지를 수신합니다.NSDictionary이 값은 0이 아니어야 합니다.

aKey : 값에 대한 키입니다.키가 복사됩니다(사용).copyWithZone:키는 다음과 같아야 합니다.NSCopying의전).키는 0이 아니어야 합니다.

value : 키의 입니다.

key : 값에 대한 키입니다.키 값 코딩을 사용하는 경우 키는 문자열이어야 합니다("키 값 코딩 기본 원리" 참조).

언급URL : https://stackoverflow.com/questions/1249634/wheres-the-difference-between-setobjectforkey-and-setvalueforkey-in-nsmutab

반응형