objective-c - parametros - definicion de clase en java
Llame a un método de clase desde dentro de esa clase (4)
¿Hay una manera de llamar a un método de clase desde otro método dentro de la misma clase?
Por ejemplo:
+classMethodA{
}
+classMethodB{
//I would like to call classMethodA here
}
Debería ser tan simple como:
[MyClass classMethodA];
Si eso no funciona, asegúrese de tener la firma del método definida en la interfaz de la clase. (Generalmente en un archivo .h)
En el objetivo C, "self" se usa para llamar a otros métodos dentro de la misma clase.
Así que solo necesitas escribir
+classMethodB{
[self classMethodA];
}
En un método de clase, self
refiere a la clase que se está enviando. Entonces, desde dentro de otro método de clase (por ejemplo, classMethodB), use:
+ (void)classMethodB
{
// ...
[self classMethodA];
// ...
}
Desde dentro de un método de instancia (por ejemplo, instanceMethodB), use:
- (void)instanceMethodB
{
// ...
[[self class] classMethodA];
// ...
}
Tenga en cuenta que ninguno de ellos presume qué clase de mensajes está enviando. La clase real puede ser una subclase.
Por supuesto.
Digamos que tienes estos métodos definidos:
@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
Los primeros 2 métodos de clase podrían implementarse de la siguiente manera:
+ (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];
}