2012-08-22 3 views
1

저는 iPhone 프로그래밍에 대한 비디오 자습서를 진행하고 있습니다.이 계산기는 매우 간단한 계산기 앱입니다. 어느 시점에서 다음 메소드를 선언합니다 ::Objective C 메소드 선언/호출

- (NSString*)calculate:(NSString*)operation withNumber:(NSInteger)number 
{ 
    return nil; 
} 

아직 구현되지 않았습니다. 그런 다음이 메서드를 호출하려고합니다.

self.display.text = [self calculate:[sender currentTitle] withNumber:[self.display.text intValue]]; 

Xcode에서 '예상 표현'오류가 발생합니다. 여기에 무슨 문제가 있습니까? 그리고 방법에 withNumber 무엇입니까? 나는 이해할 것이다

- (NSString*)calculate :(NSString*)operation :(NSInteger)number; 

Thats 매개 변수로 문자열과 int를 취하고 String을 반환하는 메서드입니다. 나는 여기에 withNumber이 무엇인지 모르겠다. 그것이 작동하는

+0

이 표현식은 정확히 어디에서 예상됩니까? Xcode는 줄 내의 위치를 ​​포함하여 정확한 위치를 알려줍니다. –

+0

Objective-C에서 첫 번째 다음에 오는 모든 매개 변수에는 식별자가 있습니다. 목표 -C는 다형성이다. 'calculate : withNumber :'는'calculate : withInt :'와 다릅니다. 두 방법 모두 동시에 존재할 수 있습니다. Java Objective-C와 달리 C는 다형성을 지원하기 위해 매개 변수 수 (예외 적용) 또는 해당 유형의 시퀀스를 사용하지 않습니다. –

+1

솔직히, 당신이 기초를 이해하지 않고 초보자 용 자습서를 작성하고 있다고 생각합니다. 내가 너라면, 내가 완전히 오해 한 것을 가르 칠 위험을 감수하지 않을 것이다. –

답변

3

OK, 당신은 불필요한 공백을 제거해야합니다

- (NSString*)calculate:(NSString*)operation withNumber:(NSInteger)number{ 
    ... 
} 

너무 물론 메소드를 호출에

.

'무엇이 withNumber입니까? ': 이것은 Objective-C에서와 같이 다중 입력 방식을 사용하는 방식이며, 메소드의 이름은 인수 앞에 나오지 않습니다. 이 방법은 실제로

내가 강력하게 당신은 - (NSString*)calculate:(NSString*)operation :(NSInteger)number을 할 수 some beginner's guide

읽어 보시기 바랍니다 다음은 [self calculate:myString :myNumber]; 전화를해야하지만 목표 - C 사용자의 대다수가 그렇게하지 않을 런타임 시스템에 calculate:withNumber:라는 이름의 경우 : 언어는 코드를 명확히하고 인수가 무엇인지 지정하는 기회를 제공합니다. 그 기회를 잡으십시오.

+0

위의 답변 외에도 초보자를위한 Apple 가이드가 있습니다. https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/_index.html – Iducool

+1

시간이 오래 걸리므로, 물론 그 밖의 모든 것들. 그러나 저는 이것을 매우 편리하게 생각하며, 코드를 매우 명확하고 쉽게 읽을 수 있다고 생각합니다. 추가 문의 사항이없는 경우 답변으로 받아 드리는 것이 좋습니다. – Olotiar

관련 문제