문제

글쎄, 나는 Head First iPhone Development (O'Reilly)를 사용하여 iPod/iPhone 프로그래밍으로 시작했으며 책에서 코드를 입력하고 있습니다. 두 가지 문제가 있으며, 하나는 프로그래밍 관련이 있고 다른 하나는 그렇지 않습니다.

  • 목표 C 방법의 형식을 이해하지 못합니다. 이 책의 소스 코드를 기반으로 몇 가지 오류가 발생합니다. 다음 문제로 이어집니다.

  • 코드 중 일부는 버기입니다. 코드를 수정하지 않고 실행할 수 없기 때문에 그렇게 생각합니다. 이 책은 텍스트에 오타가 있으며, 첫 번째 버전이기 때문에 오타가 있지만 코드가 "고정"하는 것이 그와 관련이있을 수 있습니까?

그래서... Objective-C 방법에 대해 자세히 알아볼 수 있으며 구조 측면에서 어떻게 작동하는지, 그리고 반환 유형 및 인수가 어디로 가는지 배울 수 있습니까?

이 책이있는 사람들을 위해, 나는 Instatweet 앱의 중간에 처음으로 향합니다.

감사.

도움이 되었습니까?

해결책

어쩌면 "C와 같은"언어와 OBJ-C의 비교가 유용 할 것입니다. Java와 함께 가자. stackbackgroundColor 메소드가있는 사각형 클래스를 상상해보십시오. 우리는 rect라는 사각형 인스턴스가 있다고 가정합니다.

Java에서는 방법 서명이있을 것입니다

public void setBackgroundColor(int r, int g, int b) { ... }

Objective-C에서 인수는 메소드 서명의 일부이므로

- (void)setBackgroundColorWithRed:(int)r green:(int)g blue:(int)b;

"-"는 사각형 클래스의 인스턴스 메소드임을 의미합니다. (void)은 메소드의 리턴 유형입니다. 그런 다음 논쟁이 오세요. 각 결장은 인수를 정의하며,이 예제에서 입력 된 (각 Arg는 (int))를 정의합니다.

이 방법을 호출하는 것을 비교해 봅시다. 자바:

rect.setBackgroundColor(255, 255, 0);

OBJ-C :

[rect setBackgroundColorWithRed:255 green:255 blue:0];

많은 사람들이 OBJ-C의 구문에 걸려 넘어집니다. 당신은 혼자가 아닙니다. 바라건대이 비교가 일을 더 명확하게 만들 것입니다. 또한 객관적인 C의 언어 적 강도를 보여줍니다. 콜 타임에, 당신의 주장이 무엇인지 분명합니다. 코드를 읽고 Java 방법이 호출되는 것을 보았을 때 인수가 빨간색, 파란색 및 녹색임을 알지 못할 것입니다. OBJ-C에서는 개별 색상 값을 설정한다는 것이 고통 스럽습니다. 물론, 대부분의 개발자는 세트 콜러 방법에 대한 세 가지 주장이 무엇인지 추측 할 수 있지만 더 복잡한 방법은 혼란스러워집니다. Java 및 Objective-C에서 정의 된보다 복잡한 방법은 다음과 같습니다.

static Dog createDog(  String name
                     , int age
                     , boolean isNeutered
                     , String ownerName
                    );
+ (Dog *)createDogNamed:(NSString *)name 
     age:     (int)        age 
     neutered:(BOOL)       isNeutered 
     owner:   (NSString *) owner;

통화 시간 :

Dog.createDog("Fluffy", 2, true, "Moshe");
[Dog createDogNamed:@"Fluffy" age:2 neutered:YES owner:@"Moshe"];

Objective-C는 더 장점이지만 훨씬 더 읽기 쉽습니다. Java 예에서는 "2"와 "true"인수가 무엇을 의미하는지는 확실하지 않습니다. Objective-C는 거의 영어처럼 읽습니다.

다른 사람들은 더 심층적 인 가이드에 대한 링크를 게시했지만, 이것이 링크를 유용하게 만들기에 충분히 구문을 넘어 서기를 바랍니다. 당신이 가진 더 구체적인 질문에 대답하게되어 기쁩니다. 내 경험상 OBJ-C 초보자는 구문에 정말 힘든 시간을 보내고 있습니다. 딸깍 하는 소리S와 기분이 좋지 않습니다. 거기에 매달려!

다른 팁

객관적인 C 방법의 정의는 매우 간단합니다. 실제로 일반 C 함수 호출 정의와 매우 유사합니다. 큰 추가는 매개 변수 이름을 지정하는 옵션입니다. 예는 다음과 같습니다.

-(int)addX:(int)x toY:(int)y
{
    return x + y;
}

적절한 개체에 메시지를 보내면 사용할 수 있습니다.

int z = [object addX:x toY:y];

이 경우 나는 매개 변수와 인수에 동일한 이름을 주어서 상황이 어떻게 일치하는지 명확하게했습니다. 당신은 쉽게 할 수 있습니다 :

int z = [object addX:4 toY:7];

그리고 나서, z 11 세가됩니다.

Apple 's를 확인하십시오 객관적인 소개 c.

기본 방법 형식은입니다

-(ReturnType *)methodName:(VariableType *)variableName{

}

예를 들어:

-(NSString *)giveMeANewStringFromAnOldString:(NSString *)oldString{

}

또한이 책의 웹 사이트에 오류를 확인해야합니다.

나는 당신과 똑같은 일을했습니다. 나는 Head First iPhone Development Book도 집어 들었습니다 (3.1 SDK 커버).

나는 그것의 모든 튜토리얼을 통해 실행했고, 응용 프로그램이 작동하지 않는 1 가지 오류 만 발견했습니다 (책에서 기록했지만 지금은 찾을 수 없습니다 ...).

그래서 그 후 나는 당신이 구문에서 겪고있는 것과 똑같은 문제가 있다는 것을 깨달았습니다.

Stephen G. Kochan의 "Objective-C 2.0의 프로그래밍"을 선택했습니다. (단순히 훌륭합니다.)이 책은 명확하고 간결합니다. 나는이 책의 25%를 통해서도 그것을 만들지 않았고 모든 질문에 대한 답변을 받았습니다.

목표 C 코드를 읽는 것은 다른 구문에 너무 익숙해 져서 뇌가 기대하는 방식에 적응하는 데 약간의 시간이 걸렸기 때문에 몇 달 동안 나를 던졌습니다.

내가 찾은 것은 뇌를 감싸면 객관적인 C 코드가 실제로 읽을 수 있다는 것입니다. Carl Norum의 위의 예는 가독성에 대한 훌륭한 데모입니다.

[object addX:4 toY:7];

그것보다 훨씬 더 읽기 쉬운 것은 아닙니다!

또한 일부 용어는 약간 다릅니다. "메시징"대상 "대"방법을 부르는 것 "도 몇 주 동안 나를 던졌습니다.

이 책 추천이 도움이되기를 바랍니다. 정말 많은 도움이되었습니다.

Apple의 훌륭한 학습 리소스가 있습니다.

학습 대상 C : 프라이머

그리고

코코아에 대한 코딩 지침

행운을 빕니다!

읽다 Mac (R) OS X에 대한 코코아 (R) 프로그래밍 (3 판), 그것은 맥과 코코아의 성경입니다.

나는 그것에 아무런 문제가 없었지만 API가 항상 발전하고 있으므로 약간의 업데이트/변경이있을 수 있습니다. 그러나 나는 모든 코드 예제와 연습을 끝내지 못하게하는 것을 찾지 못했습니다.

이 책은 읽을 책입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top