Objective-C 의 프로그램 구조 및 대상 지향 프로 그래 밍 방식 분석

Objective-C 프로그램의 구조
모든 프로 그래 밍 언어 를 배 우 는 것 처럼 첫 번 째 프로그램 은 화면 에'Hello World!'를 출력 하 는 것 이다.
내 가 본 책 에 사 용 된 컴 파일 러 는 아직도 비교적 늙 었 다.나 는 지금 Xcode 4.2.1 을 사용 하고 있다.이것 은 자동 메모리 관리 가 있 기 때문에 책의 일부 프로그램 이 잘못 보 고 될 수도 있다.프로젝트 를 만 들 때 Use Automatic Reference Counting 옵션 을 선택 하지 않 고 이 문 제 를 해결 할 수 있 습 니 다.
Xcode 를 실행 하고 Command Line Tool 프로젝트 를 새로 만 들 며 First Program 이 라 고 이름 을 지 었 습 니 다.
201642290837487.jpg (711×466)
다음 단계 에서 도 Use Automatic Reference Counting 옵션 을 취소 합 니 다.
자동 으로 생 성 된 코드 가 어떤 것 이 든 지 간 에 우 리 는 코드 를 다음 과 같이 바 꿉 니 다.

//First Program Example
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"Hello, World!");
    [pool drain];
    return 0;
}
실행,다음 과 같이 표시:
201642290929362.png (411×55)
다음은 이 코드 에 대한 간단 한 설명 입 니 다.
1.프로그램의 첫 줄 은 주석 입 니 다.C/C++/자바 와 마찬가지 로 Objective-C 주석 도//,/*??*/실현 하 다.
2、#import
컴 파일 러 에 게 Foundation 이라는 파일 을 찾 아 처리 하 라 고 알려 주세요.
3、int main (int argc, const char * argv[])
프로그램 이름 을 main 으로 지정 합 니 다.이것 은 프로그램 이 시작 되 는 곳 을 나타 내 는 특수 한 이름 입 니 다.
4、NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
자동 방출 탱크 를 위해 메모리 에 공간 을 남 겼 습 니 다.
5、NSLog(@"Hello, World!");
NSLog 라 는 이름 을 호출 할 루틴 을 지정 합 니 다.NSLog 에 전 달 된 매개 변 수 는 문자열@"Hello,World!"입 니 다.NSString 대상 입 니 다.
6、[pool drain];
분 배 된 메모리 풀 과 프로그램 과 연 결 된 대상 을 방출 하 는 데 사용 합 니 다.
클래스,대상 및 방법
1.실례 와 방법
(1)클래스 를 사용 하여 인 스 턴 스 를 만 듭 니 다.

yourCar = [Car new];
이곳 의 Car 는 하나의 유형 이 고,yourCar 는 하나의 대상 이다.
(2)클래스 와 인 스 턴 스 응용 방법:

[ClassOrInstance methed];
클래스 나 인 스 턴 스 의 이름 은"[","]를 따라 야 합 니 다."종료 에 사용 합 니 다.이 문 구 는 자바 의 대상 명,방법 명 에 해당 한다.
또한:

currentMileage = [yourCar currentOdometer];
그 중에서 currentMileage 는 반환 값 을 받 는 데 사 용 됩 니 다.
2.상세 한 코드 와 설명:

#import <Foundation/Foundation.h>

//@interface section
@interface Fraction : NSObject {
    int numerator;
    int denominator;
}
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
@end


//@implementation section
@implementation Fraction
-(void) print {
    NSLog(@"%i/%i",numerator,denominator);
}
-(void) setNumerator:(int)n {
    numerator = n;
}
-(void) setDenominator:(int)d {
    denominator = d;
}
@end

//program section
int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    Fraction *myFraction;
    myFraction = [Fraction alloc];
    myFraction = [myFraction init];
       
    [myFraction setNumerator: 1];
    [myFraction setDenominator: 3];
       
    NSLog(@"The value of myFraction is: ");
    [myFraction print];
    [muFraction release];
    [pool drain];
    return 0;
}
(1)네 번 째 줄 은 클래스 를 설명 하 는 방법 입 니 다.@interface 새 클래스:부모 클래스
(2)8~10 줄 은 세 가지 방법 을 정 의 했 는데 그 중에서'-'는 인 스 턴 스 방법 을 나타 내 고'+'는 클래스 방법 을 나타 낸다.
인 스 턴 스 방법 은 항상 인 스 턴 스 변 수 를 방문 할 수 있 지만,클래스 방법 은 클래스 자체 만 처리 하고,클래스 의 인 스 턴 스 를 처리 하지 않 기 때 문 입 니 다.
(3)31~32 번 째 줄 을 합쳐서

myFraction = [[Fraction alloc] init];
혹은

myFraction = [Fraction new];
(4)39 번 째 줄 은 대상 my Fraction 에서 메모 리 를 방출 하 는 데 사 용 됩 니 다.주의해 야 할 것 은 최신 Xcode 컴 파일 러 가 자동 으로 메모 리 를 방출 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기