Есть ли способ вызвать метод класса из другого метода в пределах одного класса?
Например:
+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
Первые два метода класса могут быть реализованы следующим образом:
+ (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];
}