2014-08-31 1 views

답변

3

기록. ARC 이전에는 "weak"(비 보유) 참조에 assign을 사용했습니다. "약하다"는 뜻은 "나는 그걸 붙잡지 않을 것이다"라는 뜻으로 assign으로 번역됩니다.

속성 전에 우리는 단지 delegate이라는 것이 규칙에 따라 retain을 호출하지 않는다는 것을 알았습니다. 다른 비 보유 속성은 일종의 문서화가 필요했습니다.

더 많은 현대적인 규칙을 준수하기 위해 iOS SDK를 정리하기위한 지속적인 노력이 있었지만 이전 방법을 사용하는 장소는 여전히 있습니다. 정확히 왜 그들이 여기에 id을 사용했는지 확신 할 수 없지만 공식 및 비공식 프로토콜에 대한 예전 습관이 원인 일 수 있습니다. ObjC 2 이전에는 프로토콜에서 선택적 메소드를 사용할 수 없었기 때문에 일반적으로 비공식 프로토콜을 사용했습니다 (예 : id을 전달하고 사용자가 필요한 것에 응답했는지 확인). 프로토콜을 주석 처리하는 이러한 스타일은 종종이 경우에 사용되었습니다. (정확한 이유는 여기에 없습니다 .UIAlertViewController는 ObjC 2를 게시 한 것 같습니다. SDK에서 작업하는 데 오랜 시간이 걸리는 예제가 있습니다.)

+0

위임 대상이 데드 델리게이트에 메시지를 보내는 결과를 초래할 수 있습니다. – Carina

+0

예. 대의원이 경계를 벗어나는 지 확인하는 것은 발신자의 책임입니다. 이것은 종종 델리게이트가 경고를 소유하게함으로써 이루어 지는데, 이는 '델리게이트'속성이 보통 할당/약한 이유입니다. –

+0

그러나 '약함'은 '대상이 죽었을 때 자동으로 무효로 설정'을 의미합니다. 따라서 '할당'과 다릅니다. – Carina

관련 문제