2

有没有办法从其他类访问方法而无需在 Objective-C 中创建对象?

4

3 回答 3

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"];
于 2012-11-16T15:31:57.280 回答
5

我怀疑你真的在寻找类方法;Objective-C 等价于其他语言的static方法。请参阅:类方法和实例方法有什么区别?

定义一个:

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

正在使用:[MONObject classMethod]


如果您希望将实例方法作为可调用的 C 函数,请参阅class_getInstanceMethod或简单地说IMP imp = [MONClass instanceMethodForSelector:@selector(someSelector)];

于 2012-11-16T15:30:06.130 回答
2

使用 + 号定义使其成为静态方法的方法,可通过类名访问,如下所示

在 .h 文件中

+ (void) someMethod;

在 .m 文件中

+ (void) someMethod {}

比您可以通过另一个文件中的类名轻松访问它

[ClassName someMethod];

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

于 2012-11-16T15:31:20.170 回答