如何从另一个类访问一个方法而不在objective-c中创建对象?

时间:2012-11-16 15:25:29

标签: objective-c ios cocoa

有没有办法在没有在Objective-C中创建对象的情况下从其他类访问方法?

3 个答案:

答案 0 :(得分: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"];

答案 1 :(得分: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 :(得分:2)

使用+符号来定义使其成为静态方法的方法,可通过类名访问

<。>文件中的

+ (void) someMethod;
<。>文件中的

+ (void) someMethod {}

比通过其他文件中的类名轻松访问

[ClassName someMethod];

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