Estoy organizando mis métodos en grupos usando #pragma mark en la implementación. Pero a veces, el código de implementación del método aparece debajo del código que llama a este método, y recibo advertencias de "Instance method not found". Sucede cuando estoy usando métodos privados. ¿Cómo arreglar eso?¿Cómo hacer una declaración directa para un método privado?
Respuesta
método más simple es utilizar una categoría anónimo. Añadir algo como esto a la parte superior de su archivo .m
, antes de que su @implementation
:
@interface MyClass()
- (void)myPrivateMethod;
@end
En este caso, usaría una extensión de clase dentro de su archivo de implementación para definir estos métodos. De esta manera, su API 'pública' todavía se define en su archivo de encabezado, y su archivo de implementación contiene la definición de sus métodos pseudoprivados.
YourClass.m
@interface MyClass()
- (void)myPrivateMethod;
@end
@implementation MyClass
- (void)myPublicMethod
{
// This will not throw an error or warning
[self myPrivateMethod];
}
- (void)myPrivateMethod
{
// Do something
}
@end
La desventaja de utilizar una categoría con nombre es que necesita una '@implementation MyClass (PrivateMethods)' correspondiente; de lo contrario, recibirá una advertencia. Solo usa una categoría anónima. – DarkDust
La sintaxis preferida para una extensión de clase privada es '@interface MyClass()'. –
En el archivo de aplicación Class.m, puede agregar una sección de interfaz al principio y declarar funciones privadas en ese país:
@interface YourClassName (private)
-(void)aPrivateMethod:(NSString*)aParameter;
...
@end
@implementation YourClassName
...
@end
- 1. Cómo especificar un método privado
- 2. La declaración directa no funcionará
- 3. Desventajas de la declaración directa?
- 4. declaración directa o externa insatisfecha
- 5. ¿Qué es la declaración directa en C++?
- 6. Confundir "reemplazar un método privado"
- 7. ¿Cómo defino dinámicamente un método como privado?
- 8. ¿Cómo crear un método de clase privado?
- 9. Parámetros de plantilla predeterminados con declaración directa
- 10. ¿Cómo puedo hacer que un método sea privado en una interfaz?
- 11. anotación para hacer que un método privado sea público solo para las clases de prueba
- 12. ¿Puede un método nativo llamar a un método privado?
- 13. Método privado en una interfaz C++?
- 14. ¿Alguna manera de invocar un método privado?
- 15. usando Jasmines spyon con un método privado
- 16. Método privado llamado error
- 17. Cómo hacer esta declaración SQL
- 18. ¿Cómo invoco un método estático privado usando reflection (Java)?
- 19. Método virtual privado en C++
- 20. Anulación de un método privado con Reflection
- 21. implementar una interfaz con un método privado en vb.net
- 22. iOS - importación frente a declaración directa con respecto a setAlpha
- 23. Terminología: declaración directa frente a prototipo de función
- 24. Alias de espacio de nombres C++ y declaración directa
- 25. Llamar a un método privado xxx usando self.xxx() desde otro método privado que da como resultado el error "método privado` xxx 'llamado "
- 26. Declaración de Acceso Base Clase Método sobrecargado
- 27. Error: uso no válido del tipo incompleto/declaración directa de
- 28. La declaración directa incluye, además de la declaración, incluir (ClassFwd.h + Class.h)
- 29. ¿La recomendación de Resharper es hacer que mi método privado sea una buena recomendación?
- 30. ¿Cuál es el propósito de la declaración directa?
+1 De las tres respuestas similares, la tuya es la más correcta. –