有没有办法从其他类访问方法而无需在 Objective-C 中创建对象?
问问题
676 次
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 回答