从该类中调用类方法

时间:2011-09-02 23:29:33

标签: objective-c class-method

有没有办法从同一个类中的另一个方法调用类方法?

例如:

+classMethodA{
}

+classMethodB{
    //I would like to call classMethodA here
}

4 个答案:

答案 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];
}