2010-06-22 4 views
1

저는 수년간 Java 프로그래머 였지만 몇 달 동안 iPhone/Obj-c 만했습니다. 내가 언어에 익숙하다고 생각할 때마다 이상한 일이 일어난다. 다음은 "초기화에서 호환되지 않는 유형"컴파일 오류를 생성하는 이유는 무엇입니까? 그것은 아주 똑바로 보인다. '이중'은 원시적 인 권리입니까?!?"초기화에서 호환되지 않는 유형"오류가 발생하지 않습니다.

-(void) testCalling{ 
    double myDoub = [self functionReturningDouble:3.0]; 
} 


-(double) functionReturningDouble:(double) input{ 
    return 1.0; 
} 
+1

두 번째 방법이 이전에 선언 되었습니까? 그렇지 않으면 반환 유형은 'id'로 간주됩니다. –

+0

또한 구현 ('.m') 파일 맨 위의 클래스 확장에서 개인/내부 메소드를 선언하는 것이 좋습니다. 이 연습은 개인/내부 방법의 구현 및 사용에 대한 위치 의존성을 제거합니다. (Apple Docs : http://devworld.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW2) – ohhorob

답변

0

메소드 선언을 바꾸어보십시오. 오브젝티브 C에서

-(double) functionReturningDouble:(double) input{ 
    return 1.0; 
} 

-(void) testCalling{ 
    double myDoub = [self functionReturningDouble:3.0]; 
} 

을 (이것이 C에 유효), 방법이 정의 또는 이전에 선언 된 경우에만 "존재"않습니다 게오르그 통지 그것이 범위의 문제 일 수있다.

+1

대신, a 메서드 서명은 그 경우에만 알려져 있습니다 :) –

+0

Thankyou! 이것을 발견하는 데 오랜 시간이 걸렸다는 것을 믿을 수 없습니다. –

+0

그냥 다른 점 .. 관심이없는 이유는 순서가 int 방법으로는 중요하지 않지만 이중으로 만 나타나는 것일까 요? –

관련 문제