有没有办法从同一个类中的另一个方法调用类方法?
例如:
+classMethodA{
}
+classMethodB{
//I would like to call classMethodA here
}
答案 0 :(得分:60)
在类方法中,self
指的是被消息的类。因此,从另一个类方法(比如classMethodB)中,使用:
+ (void)classMethodB
{
// ...
[self classMethodA];
// ...
}
在实例方法(例如instanceMethodB)中,使用:
- (void)instanceMethodB
{
// ...
[[self class] classMethodA];
// ...
}
请注意,两者都不会假设您正在发送哪个类。实际的类可能是子类。
答案 1 :(得分:8)
应该如此简单:
[MyClass classMethodA];
如果这不起作用,请确保在类的界面中定义了方法签名。 (通常在.h文件中)
答案 2 :(得分:4)
在目标C中,'self'用于调用同一类中的其他方法。
所以你只需要写
+classMethodB{
[self classMethodA];
}
答案 3 :(得分:3)
不确定
假设你已经定义了这些方法:
@interface MDPerson : NSObject {
NSString *firstName;
NSString *lastName;
}
+ (id)person;
+ (id)personWithFirstName:(NSString *)aFirst lastName:(NSString *)aLast;
- (id)initWithFirstName:(NSString *)aFirst lastName:(NSString *)aLast;
@property (copy) NSString *firstName;
@property (copy) NSString *lastName;
@end
前两个方法可以实现如下:
+ (id)person {
return [[self class] personWithFirstName:@"John" lastName:@"Doe"];
}
+ (id)personWithFirstName:(NSString *)aFirst lastName:(NSString *)aLast {
return [[[[self class] alloc] initWithFirstName:aFirst lastName:aLast]
autorelease];
}