2011-09-21 3 views
0

나는 데이터가 가득한 NSDictionarys을 가지고 있는데 데이터를 이용하는 방법이있다. 어떤 NSDictionary 사용되는 사용자의 일부 입력에 따라 달라집니다, 그래서 나는 데이터를 사용하여 NSDictionary에 대한 포인터를 만들 수 있습니다 궁금 해서요. 예를objective-c의 포인터

방법은 "foo는 사전"을 사용해야합니다, 그래서 사용자는, "옵션 foo는"선택에 대한

. 임시 사전에 "foo dictionary"를 복사하는 대신 "tempdictionary"가 "foo dictionary"의 내용을 포함하도록 어떻게 참조 할 수 있습니까?

아마 이해가되지 않았지만 사전에 감사드립니다.

답변

5

기본적으로 복사가 발생하지 않습니다. 그냥 당신이 원하는 NSDictionary을 잡고 새로운 포인터에 할당 : 당신 dataDictionary에 저장된 사전에 대한 포인터를 줄 것이다

NSDictionary *fooDictionary = [dataDictionary valueForKey:@"foo"]; 

합니다. 요청하지 않으면 사본을 만들지 않습니다.

1

코드를 명시 적으로 지정하지 않으면 복사본이 만들어지지 않습니다. 예 :

NSDictionary *fooDict = ...; // initialize fooDict and probably other dicts 

if ([self useFoo]) { 
    [self stuffWithFooDict:fooDict]; // will pass pointer of fooDict 
} 

if ([self useFooCopy]) { 
    [self stuffWithFooCopy:[fooDict copy]]; // will use a copy of fooDict 
}