2011-01-28 2 views
4

보관 및 복사의 차이점은 무엇입니까? 참조 카운팅에서 그 중요성은 무엇입니까?보존과 복사의 차이점은 무엇입니까?

개체가 alloc/retain을 사용하여 할당되면 참조 횟수가 하나 증가한다는 것을 알고 있습니다. 복사 사용 방법은 어떻습니까?

또 다른 질문은
@property (nonatomic, retain)와 @property (nonatomic, copy)의 차이점입니까?

+0

에 의해 원본 객체의 참조 카운트를 increate 불변의 객체에 대한 retain에 해당합니다. 하나를 선택해야합니다. :) – Jiraheta

답변

10

retain - 생성 된 개체에서 수행되며 참조 횟수가 증가합니다.

사본 - 내 지식의 최선을 귀하의 질문에 대답 새로운 객체

+1

사본도 재시도 횟수를 늘립니다. – rithik

+2

@rithik : 새 개체가 생성되면 보유 횟수가 1이됩니다. –

+0

복사가 항상 새 개체를 만드는 것은 아닙니다. – newacct

3

을 만들 수 있습니다. 먼저 보존 및 복사의 차이점은 무엇입니까? 참조 카운팅에서 그 중요성은 무엇입니까?

retain - "할당시 객체에 대해 retain을 호출하도록 지정합니다. ... 이전 값에는 릴리스 메시지가 전송됩니다." 그래서 당신은 NSString 인스턴스를 할당하는 것을 상상할 수 있습니다 (이것은 객체이고 당신이 유지하기를 원할 것입니다). 따라서 보유 수는 1 씩 증가합니다.

copy - "개체 복사본을 할당에 사용하도록 지정합니다. ... 이전 값에는 릴리스 메시지가 전송됩니다." 기본적으로 보유와 동일하지만 -reopy가 아닌 -copy를 보냅니다. 내가 정확하게 기억한다면 카운트도 1 올라갈거야.

이제 확인해 보겠습니다.

속성 속성은 컴파일러에게 getter와 setter를 생성하는 방법을 알려주는 특별한 키워드입니다. 여기서는 두 가지 속성 속성을 지정합니다. 컴파일러에게 멀티 스레딩에 대해 걱정하지 말라고 말하며, retain은 인스턴스 변수를 설정하기 전에 전달 된 변수를 유지하도록 컴파일러에 지시합니다.

다른 경우에는 retain 대신 "assign"속성을 사용하여 컴파일러에게 알리지 않을 수도 있습니다! 전달 된 변수를 유지합니다. 또는 설정하기 전에 전달 된 변수의 복사본을 만드는 "copy"속성 속성 일 수 있습니다.

도움이 되었기를 바랍니다. 나는 당신을 도울 수있는 또 다른 게시물을 여기에서 발견했다.

Objective C - Assign, Copy, Retain

건배! 호세 일반적

2

말해서 copy 원래의 객체와 동일한 값을 갖는 새로운 오브젝트를 생성하고, 방법 (1 행의 새로 생성 한 오브젝트의 참조 카운트를 설정하고, 원래의 오브젝트의 참조 카운트는 영향을받지 않았다). 그러나

, copy 그냥 당신이 대답 중 하나를 인정하지 않은 1

관련 문제