2012-11-16 2 views
1

Objective-C에서 개체를 만들지 않고 다른 클래스의 메서드에 액세스 할 수 있습니까?다른 클래스에서 메서드에 액세스하는 방법 objective-C에서 개체를 만들지 않고?

+1

예, 클래스 메소드? 메소드 선언의 앞부분에'-' 대신'+'를 추가하면'[MyClass myMethod];처럼 호출 할 수있다. – LuckyLuke

+0

그것은 어떻습니까? 그것에 대해 말할 수 있니? – Hayzum

+0

객관적인 Google 클래스 방법 c. 그것들은 특정 클래스의 객체가 아니라 클래스 인스턴스에 속하는 메소드입니다. – LuckyLuke

답변

5

저는 여러분이 정말로 클래스 메소드를 찾고 있다고 생각합니다. Objective-C는 다른 언어의 static 메소드와 동일합니다. 참조 : What is the difference between class and instance methods?

하나를 정의하려면 :

@implementation MONObject 
+ (void)classMethod { ... } 
@end 

사용에서 : [MONObject classMethod] 당신이 호출 C 함수와 인스턴스 방법을 원하는 경우에


class_getInstanceMethod, 또는 단순히 IMP imp = [MONClass instanceMethodForSelector:@selector(someSelector)];를 참조하십시오. 하는 .m 파일에 .H 파일

+ (void) someMethod; 

같은 클래스 이름을 통해 접근이 정적 메소드를 만들 것입니다 방법을 정의하는

2

사용 + 기호

+ (void) someMethod {} 

다른 파일의 클래스 이름을 통해 쉽게 액세스 할 수있는 것보다

[ClassName someMethod]; 

참고 : 해당 클래스를 가져 오는 것을 잊지 마십시오. 이 같은

+1

정적 메소드와 같은 것은 없습니다. 목표 -C. '+'접두사가 붙은 메소드는 클래스 메소드입니다. 이것은 완전히 다른 것입니다. – jlehr

8
@interface APotentiallyBadIdea : NSObject 

+ (void)potentiallySillyUnmooredMethod:(NSString *)string; 

@end 


@implementation APotentiallyBadIdea 

+ (void)potentiallySillyUnmooredMethod:(NSString *)string { 
    NSLog(@"ask yourself why this isn't on a real object %@", string); 
} 

@end 

전화를 :

[APotentiallyBadIdea potentiallySillyUnmooredMethod:@"this might be ok if it's part of a more complete object implementation"]; 
관련 문제