有没有办法在没有在Objective-C中创建对象的情况下从其他类访问方法?
答案 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];
注意:不要忘记导入该类。