2010-07-14 6 views
4

클래스 메서드와 인스턴스 메서드의 차이점은 무엇입니까? 왜 우리는 그것들을 별도로 필요로합니까? 누군가 설명해 주시겠습니까?차이 클래스 및 인스턴스 메서드

클래스와 인스턴스 메소드 인스턴스 •

- (id)init; 
- (float)height; 
- (void)walk; 

• 수업 Taimur

+1

의 중복 가능성 [목표 - C : 인스턴스 메소드 대 클래스 (http://stackoverflow.com/questions/1053592/objective-c-class-vs-instance-methods) –

답변

6

클래스 메소드

+ (id)alloc; 
+ (id)person; 
+ (Person *)sharedPerson; 

에 응답 인스턴스 방법에서만 사용할 수 있습니다 인스턴스 메서드에 응답 클래스의 인스턴스, 클래스의 메토 d는 인스턴스가 필요 없지만 클래스에서 사용할 수 있습니다.

클래스 메서드는 +으로, 인스턴스 메서드는 반환 형식 앞에 -으로 표시됩니다.

예를 들어 NSObject을 봅시다. NSObject에는 + (id)alloc이라는 클래스 메서드가 있습니다. alloc 메서드는 클래스의 인스턴스를 할당하는 데 사용됩니다. 분명히 alloc은 클래스 메서드 여야합니다. 인스턴스 메소드라면 "루트"인스턴스를 어디에서 가져올까요?

한편 - (id)init은 인스턴스의 상태를 초기화하기 때문에 인스턴스 메서드입니다.

+1

좋은 대답은 명확하게 질문에 포함 된 코드의 예를 참조하십시오. 클래스에 어떤 높이인지 물으면 [Person height] 사람이 어떤 키도 될 수 있기 때문에 대답이 없습니다. 하지만 인스턴스에 [michael height]라고 물으면 인스턴스에 대한 높이를 설정할 수 있으므로 응답 할 수 있습니다. – mbehan

5

예 :

Human ->Class You ->Instance

Humanextinguish, you 수 없습니다. Youdrink a Coke, Human 수 없습니다. Class 방법은 동일 식별 기능을 전체 그룹에 적용되는 동안

Instance 메소드는, 개인

적용됩니다.

개인과 사회 전체의 차이입니다.

[SomeClass alloc]

부모님, 당신의 이름을 줄을 먹이고 학교에 보내처럼

init

는, 그래서, Instance에 적용, 당신은 출산 주어진 것처럼 클래스의 새로운 인스턴스가 을 탄생 의미 이 사회에서 살 수있는 기술이 있어야합니다.

0
  1. 를 사용하여 정적 변수
  2. 자체는 그러나 인스턴스 메소드에서 자기 것을 나타냅니다
  3. 수업 방법 자체가 클래스를 표현하는 클래스의 인스턴스를 생성하지 않고
  4. 이 클래스와 직접 호출 할 수있는 '+'기호로 표현 클래스의 특정 인스턴스.
관련 문제