3

NSError**으로 표시된 Apple의 방법이 NSError * __autoreleasing *으로 선언되지 않는 이유는 무엇입니까?Apple 헤더가 NSError ** 매개 변수에 대해 __autoreleasing을 사용하지 않는 이유는 무엇입니까?

Transitioning to ARC Release Notes은 (?)이어야한다고 제안하는 것 같습니다.

예를 들어, NSFileManager.h의 모든 루틴.

and the method declaration would typically be: 

-(BOOL)performOperationWithError:(NSError * __autoreleasing *)error; 

이 때문에 모든 NSError * error = nil; 선언에가는 레거시 코드베이스를 지원하는이 될 수 :하지만 실제로 ARC 릴리스 노트에으로의 전이에 기록됩니다 무엇을 사용하여 애플 헤더의 어떤 표시되지 않습니다 strong을 암시하고 Apple이 __autoreleasing을 넣으면 매번 임시 __autoreleasing 로컬 변수가 생성됩니까? 내가 생각할 수있는 유일한 것.

답변

5

Objective-C 개체에 대한 이중 포인터는 암시 적으로 LLVM spec에 지정된 __autoreleasing입니다.

+0

흥미로운 문서 링크! ARC 릴리스 노트로 넘어가는 문서에서 일치하는 스토리지 유형이있는 임시 변수가 생성된다는 것을 의미하는 것과 일치하지 않는 것 같습니다. ?? – Dad

+0

@Dad 이러한 변수는 쓰기 저장 후 전달을 위해 컴파일러에서 만들어지며 두 번째 포인터의 저장 한정자에 영향을주지 않습니다. – CodaFi

+0

참조하는 문서가 분명합니다. Apple 헤더와 비교할 때 작성된 것처럼 혼동 스럽기 때문에 ARC 릴리스 노트로의 전환 문서에 대한 문서화 요청을 제출했습니다. 당신의 도움을 주셔서 감사합니다! – Dad