클래스 메서드는 정적 메서드입니까? 이 주장이 사실입니까? 따라서 우리가 NSString을 선언 할 때 alloc이 클래스 메소드이기 때문에클래스 메서드 및 인스턴스 메서드
NSString * hello = [[NSString alloc] init]; 클래스 메서드
[hello isEqualtoString : @ "Hello"]; 인스턴스 메소드
클래스 메서드는 정적 메서드입니까? 이 주장이 사실입니까? 따라서 우리가 NSString을 선언 할 때 alloc이 클래스 메소드이기 때문에클래스 메서드 및 인스턴스 메서드
NSString * hello = [[NSString alloc] init]; 클래스 메서드
[hello isEqualtoString : @ "Hello"]; 인스턴스 메소드
당신은
[NSString alloc] <=> /* hypothetical */ NSString::alloc()
같이 C에서 static
방법 ++와 유사한 것으로 클래스 메소드의을 생각할 수 그러나 뒤에서, 큰 차이가있다. 예를 들어, C++ static
메서드에서는 this
을 사용할 수 없습니다. Objective-C 클래스 메서드에서 self
은 완벽하게 유효하며 클래스 개체를 참조합니다.
에서 객체 지향 프로그래밍클래스 방법 즉 그 클래스의 객체 메소드/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을 참조 할 수 있습니다.