속성 선언에 '복사'를 넣는 것은 힙의 객체가 참조로 전달되는 객체 지향 환경을 사용하여 비행하는 것입니다. 여기서 얻는 이점 중 하나는 객체를 변경할 때 해당 객체에 대한 모든 참조입니다 최신 변경 사항을 참조하십시오. 많은 언어가 'ref'또는 유사한 키워드를 제공하여 값 유형 (예 : 스택의 구조)이 동일한 동작의 이점을 얻을 수 있도록합니다. 개인적으로 필자는 복사를 거의 사용하지 않고 할당 된 객체의 변경 사항으로부터 속성 값을 보호해야한다고 생각되면 할당하는 동안 해당 객체의 복사 방법을 호출 할 수 있습니다. 예 :
p.name = [someName copy];
물론 해당 속성이 포함 된 객체를 디자인 할 때 할당이 복사되는 패턴에서 디자인이 이점을 얻는 지 여부 만 알 수 있습니다. Cocoawithlove.com 은 다음과 같이 말합니다.
"세터 매개 변수를 변경할 수 있지만 경고없이 속성의 내부 상태를 변경할 수없는 경우 복사 접근 자를 사용해야합니다."-예기치 않은 변경 값을 참을 수 있는지 여부에 대한 판단은 모두 본인의 것입니다. 이 시나리오를 상상해보십시오.
//person object has details of an individual you're assigning to a contact list.
Contact *contact = [[[Contact alloc] init] autorelease];
contact.name = person.name;
//person changes name
[[person name] setString:@"new name"];
//now both person.name and contact.name are in sync.
이 경우 복사를 사용하지 않고 접점 오브젝트는 새 값을 자동으로 가져옵니다. 그러나 우리가 그것을 사용했다면, 변경 사항을 감지하고 동기화했는지 수동으로 확인해야합니다. 이 경우 의미를 유지하는 것이 바람직 할 수 있습니다. 다른 경우에는 복사가 더 적합 할 수 있습니다.
name
출시dealloc
여부는?