2012-06-13 3 views
4

나는 'rvalue'가 의 반환 값에 대한 단순한 약자라고 생각합니다. 반환 객체를 초기화하는 것은 무엇을 의미합니까? 이것은 나의 주요 질문이다. 나머지는 내 상황에 대한 맥락이지만, 나는 일반적인 대답에 정말로 관심이있다."BAR 유형의 rvalue를 가진 FOO 유형의 반환 객체를 초기화 할 수 없습니다"는 의미는 무엇입니까?

나는 다른 사람의 코드를 찾고 있어요 : 이론적으로

return [p_facebook.facebook handleOpenURL:url]; 

이 호출됩니다 : 제가 보는

- (BOOL)handleOpenURL:(NSURL *)url; 

: Cannot initialize return object of type 'BOOL' (aka 'signed char') with an rvalue of type 'id'합니다. 이 클래스는 다른 곳에서 정의 될 수 있고 경로 문제가 있다고 생각합니다 ...

+0

"handleOpenURL을 구현하지 못할 수도 있습니다"에 대한 경고가 있습니까? –

+0

없습니다. 안타깝게도이 코드는 합법적이지만 구문 적으로 선호되는 구문 때문에 Xcode가 표시하려고하는 것보다 더 많은 경고를 생성합니다. –

+1

내 프로젝트의 헤더보다 우선 순위가 높은 헤더 검색 경로에서 이전 .h를 찾아 내 컴파일 문제를 해결했습니다. –

답변

6

이 컨텍스트에서 rvalue은 "반환 값"이 아니며 "대략"값의 약식입니다. 과제 또는 명세서의 오른쪽에 나타나는 객체입니다. -handleOpenURL:의 구현에서 어느 시점에 id 유형의 객체를 반환한다는 것을 알 수 있습니다. 이는 분명히 선언 된 BOOL 반환 유형과 호환되지 않습니다. -handleOpenURL:의 출처에 액세스 할 수있는 경우 먼저 잘못된 반환을 확인하시기 바랍니다.

+0

여기에 아무것도 초기화되지 않았습니까? 어쩌면 나는 그 말을 이해하지 못할 것이다. 불법적 인 "과제"처럼 보입니다. 나는 또한 메소드의 서명이 깨끗하기 때문에 이것이 런타임 예외가 될 것이라고 생각한다. 내 의혹은 id를 반환하는 어딘가에서이 클래스의 중복이있을 수 있다는 것입니다. 검색 중. 내가 볼 수있는 가장 확실한 복사본은 합법적 인 BOOL 만 반환하는 것입니다. –

+0

방금 ​​"초기화"라는 단어를 무시하면 오류가 더 나을 것입니다. - 'id'유형의 rvalue를 사용하여 'BOOL'유형의 객체 (일명 'signed char')를 반환 할 수 없습니다. 나는 그것이 그들이 가지고있는 방식에 대한 사건을 볼 수 있습니다. –

관련 문제