메서드에 매개 변수로 NSError 개체가 필요한 많은 코코아 메서드가 있지만 오류가있을 경우 오류 메서드를 호출 메서드로 반환하는 수단입니다. 반환 된 객체가 유지됩니까? 그건있을 필요합니까, 호출 오브젝트 코드 (오류가 반환되는 방법)에서, 코드 같은 몇 가지 :이 어디서나 볼, 그리고 한반환 된 NSError 객체를 릴리스해야합니까?
NSError *error;
[apiCall .... error:&error];
if (error){
[*error release];
}
은 할 필요가없는 경우 이걸 어떻게 할 수 있니?
[* 오류 코드]를 삽입 한 이유는 NSError var를 다음과 같이 지정할 수도 있기 때문입니다. NSError ** error; 어떤 물체를 가리키는 점입니다. 이게 유효합니까? – casademora
"out 파라미터"또는 "output 파라미터"일 때만'error'의 타입으로'NSError **'를 지정합니다. 이 경우 당신은 역 참조 (dereference)하지만,'* error'는'NSError * '타입을 가질 것입니다. 매개 변수를 사용하면 함수에 반환 값이 하나만 있다는 사실을 알 수 있습니다. Objc-C의 Out 매개 변수는 인수가 값별로 전달되기 때문에'Type **'을 사용합니다. 또한'error'가'NSError **'타입을 가지고 있다면'NSError * '에 대한 포인터로 초기화 (API 호출에서 무엇을하는지)하거나 포인터를 할당해야합니다 그러나 조금 이상합니다. – outis
@outis autoreleased되면 잘못된 호출자 메서드에서 사용하지 않는 것입니다. NSError *를 실제로 생성하고 out 매개 변수 NSError **에 할당 한 메서드의 범위가 메서드 호출로 끝났으므로 호출자에서이 메서드를 사용합니다. – SayeedHussain