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
'programing' 카테고리의 다른 글
일련의 번호에서 누락된 번호를 확인하는 방법은 무엇입니까? (0) | 2023.06.15 |
---|---|
자바에서 사용자 정의 유형을 포함하는 오라클 저장 프로시저를 어떻게 호출합니까? (0) | 2023.06.15 |
뒤에 코드가 없는 ASP.net 페이지 (0) | 2023.06.15 |
플롯 축 값 제거 (0) | 2023.06.15 |
C++에서 기능하는 변수의 수 (0) | 2023.06.15 |