2012-11-16 63 views
1

有没有一种方法可以从其他类访问方法,而无需在Objective-C中创建对象?如何从其他类访问方法而不在objective-c中创建对象?

+1

是,类方法?你可以在方法声明的前面添加'+'而不是'-',然后你可以像'[MyClass myMethod]'那样调用它;' – LuckyLuke

+0

这是怎么回事?你能告诉它吗? – Hayzum

+0

目标c中的Google类方法。它们是属于类实例的方法,而不属于特定类的对象。 – 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)];

2

使用+符号通过类名.m文件来定义方法,这将使其静态方法,访问这样

在.h文件中

+ (void) someMethod; 

+ (void) someMethod {} 

比你可以很容易地通过其他文件中的类名访问它

[ClassName someMethod]; 

注意:不要忘记导入该类。

+1

有没有这样的事情作为静态方法Objective-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"]; 
相关问题