나는 아무 소용이없는 방법을 추가하려고 시도했습니다. 이 방법은 사전을 반환하기 때문에입니다
-(NSMutableDictionary*) getResponse
{
return response;
}
. 메서드 자체를 반환하려면 메서드의 선택기에 대한 구현을 위해 self
개체를 요청하거나 Method
구조를 반환하도록 Objective-C 런타임에 요청해야합니다.
하지만 실제로하고 싶은 것이 아닙니다. 그렇습니까?
이 방법으로 응답 사전을 반환한다는 의미 인 경우 해당 응답은 정확하게 수행됩니다. 서면으로 옳습니다 (이름에 대한 설명은 질문에 대한 내 의견에서 이미 설명했듯이).
...하지만 다른 클래스에서 가져온 데이터는 가져올 수 없습니다.
이 메서드는 데이터 개체를 반환한다고 주장하지 않습니다. 그것은 사전 객체를 반환한다고 주장한다. 데이터 객체를 반환하면 버그가됩니다.
... void를 반환합니다.
아니요, NSMutableDictionary *
을 반환합니다. void
은 유형입니다. 그것은 다른 맥락에서 의미가 있습니다.
nil
(아무 객체도 가리 키지 않음)을 반환한다는 의미라면 반환 할 응답 사전이 없습니다. 이 객체에 응답을 요청할 때까지 응답하지 마십시오.
응답을 원하는 개체를 응답을 보유하는 개체의 대리자로 만들고 응답이 들어올 때 응답 보유자가 해당 대리인에게 메시지를 보내도록 할 수 있습니다. 그 메시지; 대안은 응답 보유자가 자신을 전달하는 것이며 대리인은 응답자에게 응답 방법 사전 구현 방법을 요청합니다.
더 많은 정보 : (대표단의 설명을 포함하지만, 그 부분을 생략하지 않음)
The Objective-C Programming Language
Cocoa Fundamentals Guide
귀하의 예를 아무 문제가 없습니다 ... 만약'response'가 클래스에 정의되어 있다면, 응답을 리턴 할 것입니다. 다른 클래스가 그것을 유지하는지 확인하십시오! –
한 가지 잘못된 점이 있습니다. 이름입니다. Cocoa 명명 규칙을 준수하기 위해서는 단순히'응답 '이어야합니다. 'get'로 시작하는 selector는 콜론으로 끝나야하고, 인수는 얻은 값 (return-by-reference)을 저장할 포인터 여야합니다. 이 방법은 그대로지만 간단히'response'라고 명명해야합니다. –