- (void) doSomething: (id)with {
int a;
a = [with doSomething];
}
컴파일러는 어떤 형식을 반환할지 알 수 있습니까 [with doSomething]
? 그것이 내가 할당 한 것이기 때문에 int
으로 가정합니까?objective-c가 익명 객체에 의해 반환 될 내용을 어떻게 알 수 있습니까?
- (void) doSomething: (id)with {
int a;
a = [with doSomething];
}
컴파일러는 어떤 형식을 반환할지 알 수 있습니까 [with doSomething]
? 그것이 내가 할당 한 것이기 때문에 int
으로 가정합니까?objective-c가 익명 객체에 의해 반환 될 내용을 어떻게 알 수 있습니까?
doSomething이 여러 다른 클래스에 의해 다른 반환 유형으로 구현 될 수 있기 때문에 반환되는 유형을 확실히 알 수 없습니다.
나는 컴파일러가 그 이름을 가진 모든 메소드 구현을 찾고, 그 중 적어도 하나가 위의 예제에서 int를 리턴한다고 생각한다. "doSomething"서명이 int를 반환하지 않으면 경고를 표시합니다.
컴파일러는 현재 표시되어있는 모든 메서드를 알고 있습니다. 전송중인 메시지의 유형이 있으면 해당 유형을 사용합니다. 선택자를 모두 가진 여러 메소드 유형을 알고 있다면 임의로 하나를 선택하여 경고와 버그가 발생할 수 있습니다. 그러한 메서드의 형식을 모르는 경우 메서드에서 id
을 반환한다고 가정합니다.