2012-08-31 6 views
-2

클래스 메서드는 정적 메서드입니까? 이 주장이 사실입니까? 따라서 우리가 NSString을 선언 할 때 alloc이 클래스 메소드이기 때문에클래스 메서드 및 인스턴스 메서드

NSString * hello = [[NSString alloc] init]; 클래스 메서드

[hello isEqualtoString : @ "Hello"]; 인스턴스 메소드

답변

0

당신은

[NSString alloc] <=> /* hypothetical */ NSString::alloc() 

같이 C에서 static 방법 ++와 유사한 것으로 클래스 메소드의을 생각할 수 그러나 뒤에서, 큰 차이가있다. 예를 들어, C++ static 메서드에서는 this을 사용할 수 없습니다. Objective-C 클래스 메서드에서 self은 완벽하게 유효하며 클래스 개체를 참조합니다.

2

에서 객체 지향 프로그래밍클래스 방법 즉 그 클래스의 객체 메소드/A 클래스 /인가 호출 기능이 아닌 그 특정 예이다. 인스턴스 메서드은 개체에서 직접 호출되는 메서드입니다.

일부 언어에서는 각 클래스가 Class 객체로 표현되므로 클래스 메소드는 해당 객체의 인스턴스 메소드입니다. 반사와 내성을 적용하는 데 유용합니다.

objective-c 클래스 메서드는 선언 앞에 앞에 + 기호를 사용하여 정의되지만 인스턴스 예제에서는 앞에 -을 사용합니다. 당신은 당신이 그들 모두를 변경해야 아니면 그냥 관련없는 기능을위한 장소가 필요 특정 객체를 참조해야하거나하지 않는 경우

@interface Rectangle : NSObject 

    + (void)join:(Rectangle *)firstRect withAnother:(Rectangle *)secondRect; 
    - (void)area; 

@end 

클래스의 방법이 자주 사용되는 예를 들면 다음과 같습니다 인스턴스 개체로.

귀하는 질문에 static라고 말했습니다. 클래스 메소드의 선언 이전에 static이라는 키워드를 가진 Java와 같은 언어를 언급했을 것입니다. objective-c에서 static 키워드는 그것과 동일한 의미를 가지고 있습니다. used in C.

참조로 this answer on SO 또는 this paragraph을 참조 할 수 있습니다.

관련 문제