有没有办法从同一个类中的另一个方法调用一个类方法?
例如:
+classMethodA{
}
+classMethodB{
//I would like to call classMethodA here
}
有没有办法从同一个类中的另一个方法调用一个类方法?
例如:
+classMethodA{
}
+classMethodB{
//I would like to call classMethodA here
}
在类方法中,self
指的是被消息传递的类。因此,在另一个类方法(比如 classMethodB)中,使用:
+ (void)classMethodB
{
// ...
[self classMethodA];
// ...
}
从实例方法(例如 instanceMethodB)中,使用:
- (void)instanceMethodB
{
// ...
[[self class] classMethodA];
// ...
}
请注意,两者都没有假定您正在发送消息的是哪个类。实际类可能是子类。
应该很简单:
[MyClass classMethodA];
如果这不起作用,请确保您在类的接口中定义了方法签名。(通常在 .h 文件中)
在目标 C 中,“self”用于调用同一类中的其他方法。
所以你只需要写
+classMethodB{
[self classMethodA];
}
当然。
假设您定义了这些方法:
@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
前 2 个类方法可以实现如下:
+ (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];
}