Objective-c class design / organization

He creado mi primera aplicación de iPhone que presenta pistas de audio de un género similar en una vista de tabla. El usuario puede reproducir pistas de audio usando controles similares a iPod que transmiten mp3.

Todo mi código está en dos classs principales: RootViewController y CustomCell .

Mi RootViewControllerClass es masiva. ¿Estoy asumiendo que es un layout deficiente para copyr casi todo mi código en una class?

Inicialmente, pensé que tenía sentido porque solo tengo un controller de vista. Para practicar mejores convenciones de encoding, me gustaría dividir mi class RootViewController en classs más pequeñas y específicas (¿suponiendo que esta es la práctica correcta?).

Aquí están los componentes de RootViewController que planeo separar en classs individuales:

  • DataSource : extrae datos del server; modifica y organiza los datos para tableView
  • TopChartsView : incluye botones en una vista para modificar las pistas de audio (dataSource) por la mejor sorting semanal / mensual / de todos los times
  • GenreChange – incluye botones en una vista para filtrar el dataSource por género
  • AudioPlayerControls : incluye botones en una vista que son similares a los controles del iPod.

¿Estoy organizando mis classs correctamente? Parece lógico que organice mis classs por funciones. Sin embargo, estoy teniendo dificultades para comprender cómo las classs deben interactuar entre sí en un layout ideal.

¿Utilizo protocolos y delegación para unir mis classs?

Es más sobre progtwigción orientada a objects que sobre iOS, y creo que deberías familiarizarte con algunos conceptos de OO-Design (si realmente te interesan), pero desde mi punto de vista no tienes que hacerlo. Para responder a sus preguntas primero:

¿Estoy asumiendo que es un layout deficiente para copyr casi todo mi código en una class?

Algunos lo dicen …

¿Estoy organizando mis classs correctamente?

Difícil de decir, por la información que le diste.

¿Utilizo protocolos y delegación para unir mis classs?

No necesariamente.

Pero : si su código funciona bien, usted es el único que trabaja en él, no tiene previsto volver a utilizar su código como biblioteca o tomando classs completas de él (es decir, si solo planea copyr y pegar ), no hay necesidad de refactorizar todo solo por el simple hecho de hacerlo.

Aunque : si quieres seguir adelante o si planeas escribir bibliotecas o algo así, sería una buena idea aprender sobre OO (a veces es incluso entretenido). Dado que está trabajando con el objective-c, esta versión de los documentos de Apple podría ser un buen comienzo para aprender.

Y : si lees un poco sobre progtwigción OO y (más importante) te tomas el time y para leer el código de otros, sabrás cómo y cuándo es útil organizar tu propio código.

El layout de aplicaciones de iOS es principalmente sobre el patrón de layout de MVC, lo que significa que separa su model, vista y controller. En su caso, pondría la lógica DataSource en un file o files separados (es su model). Esto también facilita la reutilización de la misma lógica en otro controller de vista en un punto posterior. Tal vez también pueda subclassar su UITableView si hay muchos códigos allí.

Los protocolos y los delegates son una excelente manera de conectar sus classs y se utilizan con frecuencia en un buen layout. Dado que no tiene muchos controlleres de vista en su aplicación (por lo que veo), no hay muchas oportunidades para usarlos, corríjame si estoy equivocado;)