¿Cuáles son algunas de las convenciones sobre la escritura y la adhesión a protocolos en Objective-C?

En general, puede mirar proyectos de código abierto para una buena idea sobre las convenciones del lenguaje o un marco. Hay toneladas en Github.

Para Objective-C específicamente, algunas cosas fuera de mi cabeza:

Por lo general, las clases tienen como prefijo dos o tres letras en mayúscula para resaltar a qué marco pertenecen. Por ejemplo, todas las clases de framework UIKit de Apple tienen el prefijo “UI”, Core Animation usa “CA” y así sucesivamente. Aunque para proyectos personales, creo que se prefieren tres letras.

Como la mayoría de los lenguajes de programación orientados a objetos, debe nombrar sus archivos después de la clase que contiene. UITableViewController debe extenderse a través de UITableViewController.h y UITableViewController.m que deben contener el encabezado y la implementación respectivamente.

Los protocolos generalmente están contenidos en el archivo de encabezado, ya que deben ser visibles para otros archivos, y debe importar sus archivos de encabezado, no su implementación.

Si eso no es suficiente, Apple tiene una página corta sobre algunas de sus convenciones.

Para los protocolos de origen de datos o delegado, colóquelos en el mismo encabezado que la interfaz de clase relevante. Me gusta que se declaren hacia adelante sobre la interfaz y que se definan debajo de ella.

Para otros protocolos, pueden merecer un archivo propio.

Haga que sus protocolos sean lo más simples posible. Merecen una buena factorización tanto como las interfaces de clase.

Si su protocolo tiene métodos opcionales, documente claramente cuál debería ser el comportamiento de la persona que llama en ausencia de ese método.

Los protocolos con solo métodos @opcionales están bien, si todo el comportamiento descrito es realmente opcional. Pero detente y piensa si debería ser así.

Los protocolos pueden ser una forma efectiva de desacoplar componentes de un sistema. Trate de pensar en cómo se vería su sistema si no hubiera interfaces de clase pública, solo protocolos.

Los protocolos de origen de datos / delegado deben tomar el objeto delegante como su primer parámetro.

Cada protocolo que realice debe cumplir con NSObject.

Primero es considerar si realmente necesita un protocolo. Me imagino que los dos usos más populares para ellos en los últimos años son para crear Delegados para dos casos:

  • Una clase de modelo que hace algo asíncrono como una operación de red y necesita decirle a un controlador de vista cuando se hace para que la interfaz de usuario se pueda actualizar
  • Un controlador de vista presentado de manera modal por otro que necesita comunicar algunos datos al finalizar

El primer caso generalmente se resuelve mejor con bloques y el segundo con Unwind Segues.

Sin embargo, si realmente necesita crear un protocolo, ¡la respuesta del usuario de Quora es excelente!

More Interesting

¿Qué es Kiel y cuáles son sus aplicaciones?

¿Alguna sugerencia sobre dónde debería comenzar a reorientarme a la web, los dispositivos móviles y las redes sociales si mi experiencia reciente ha sido con las finanzas y la logística?

¿Es mejor hacer una aplicación con mucha funcionalidad o una que sea básica?

¿Qué mejores prácticas debo seguir al crear estructuras de URI para aplicaciones móviles?

Programación de computadoras: ¿Qué tan popular es el desarrollo multiplataforma de Visual C ++ (VS 2015) para Android, iOS y Windows Mobile?

¿Puedo tomar mi aplicación móvil actual y asignarla a otro equipo de desarrollo para continuar el proyecto?

¿Por qué Python no es adecuado como lenguaje de desarrollo de aplicaciones móviles?

¿Cómo mantienen actualizadas sus especificaciones las empresas de desarrollo ágil?

¿Se puede utilizar Enterprise Mobile App Builder y MBaaS para el desarrollo de aplicaciones web?

¿Qué factores se deben tener en cuenta al elegir una empresa de servicios de desarrollo de aplicaciones de Android?

¿Qué idiomas necesitas para aprender a hacer la programación de aplicaciones móviles?

¿Cuál es el uso de las opciones de desarrollador en un móvil Android?

¿Cómo crearé y promoveré una aplicación móvil para crear interacción con el usuario?

¿Cuál es la mejor línea de asunto para el marketing por correo electrónico de desarrollo de aplicaciones web y móviles?

¿Cuál es la explicación de las razones por las cuales el IO programado no funciona muy bien cuando el dispositivo IO es un disco duro o una pantalla gráfica?