Estoy tratando de passing
valores de segunda class
a primera class, para eso estoy usando el protocol
y el process de delegate
. Cada vez que ejecuto mi progtwig me enfrento a continuación Problema.
No Type or Protocol Named 'locateMeDelegate'
Viewcontroller A .h
@interface first : UIViewController < locateMeDelegate > { }
Normalmente, si pretende que otras classs usen su protocolo, debe declararlo en el file de encabezado de la siguiente manera:
// MyClass.h @protocol MyProtocol; @interface MyClass : NSObject @end @protocol MyProtocol - (void) doSomething: (MyClass*) m; @end
Después de declararlo, debe implementar los methods del protocolo en el file de implementación, que debe cumplir con el protocolo como este:
// MyClass.m @implementation MyClass <MyProtocol> pragma mark - MyProtocol methods - (void) doSomething: (MyClass *)m { // method body } @end
Después de estos dos pasos, estará listo para usar su protocolo en cualquier class que desee. Por ejemplo, digamos que queremos transferir datos a MyClass desde otra class (por ejemplo, OtherClass.h). Debería declarar en la propiedad OtherClass.ha para que podamos consultar MyClass y ejecutar el protocolo. Algo como esto:
// OtherClass.h #import MyClass.h @interface OtherClass : NSObject @property (weak) id<MyProtocol> delegate; @end
No olvide importar el file de encabezado donde declaró su protocolo, de lo contrario, Xcode solicitará No Type o protocolo denominado "MyProtocol"
id<MyProtocol> delegate;
significa que puede establecer como delegado de OtherClass
cualquier object ( id
) que se ajuste al protocolo MyProtocol
( <MyProtocol>
) Ahora puede crear un object OtherClass desde MyClass y establecer su propiedad de delegado en sí mismo. Me gusta esto:
// MyClass.m - (void)viewDidLoad() { OtherClass *otherClass = [[OtherClass alloc] init]; otherClass.delegate = self; }
MyClass
ajusta a MyProtocol
. Espero que esto pueda ayudar. Si desea saber más sobre los protocolos, puede consultar estos dos sitios web:
Trabajando con protocolos – Documentación de Apple
Tutorial de Objective-C de Ry (este es fácil de captar)
En mi caso, el problema se debió a la import del file de encabezado del delegado al file .h de la class del delegador. Esto parece crear una especie de círculo vicioso. Tan pronto como eliminé la statement de import del encabezado del delegado del file .h del delegador, el error desapareció.