1

J'ai travaillé sur mon premier projet XCode/iOS et jusqu'à présent, ça a été une expérience agréable. Actuellement, je travaille sur un fichier Nib qui sert d'affichage principal pour d'autres vues. Dans ce fichier Nib, j'ai un UIView primaire et à côté de cela, je suis en train de concevoir une série de sept autres vues. Au moment de l'exécution, j'échange ces sept vues lorsque nécessaire, dans un conteneur UIVie, situé sur mon UIView principal. Sur l'ensemble des 8 vues que je conçois dans IB, j'ai une grande quantité de boutons, d'images et d'autres objets qui doivent être reliés à IBOutlets. Au fur et à mesure que ce projet prend de l'ampleur, il serait utile que je divise ma classe entre plusieurs fichiers de code. L'utilisation de catégories est la solution, cependant, j'ai rencontré un problème - quand j'ai essayé de créer un IBOutlet dans un de mes en-têtes de catégorie, le compilateur XCode continue de me donner des erreurs et des avertissements sur les ivars et les prises. Dans mon Nib, j'ai un grand nombre d'objets qui ont besoin de points de vente et je préférerais ne pas avoir à tous les définir dans un fichier de code énorme, si c'est possible. Cependant, je comprends que je dois travailler dans mes limites, alors ma question est un peu différente de celle de savoir comment ajouter un IBOutlet à une catégorie. Au lieu de cela, j'aimerais savoir quelles sont les meilleures pratiques pour scinder une grande classe UIViewController entre plusieurs fichiers de code? Quelles sont les limites de l'objectif-c et quelle est la meilleure façon de structurer votre code lorsque vous travaillez avec la conception de l'interface?À la recherche de bonnes directives sur la gestion du code pour les grandes classes UIViewController

Mon code n'est pas encore compliqué, mais je voudrais vraiment commencer à le restructurer pour qu'il soit beaucoup plus gérable quand il se compose de 100 de méthodes et 1000 de lignes de code.

Des pointeurs seraient utiles. Je vous remercie!

Répondre

2

Vous pouvez créer une NIB contenant plusieurs objets de contrôleur, chacun gérant les vues correspondantes, ce qui vous aidera à gérer votre code plus facilement. L'inconvénient est que votre empreinte mémoire est plus importante en chargeant un grand NIB. Pour ce faire, définissez les contrôleurs dans des classes séparées avec les IBOutlets appropriées, puis faites glisser NSObject depuis la barre d'objets (où UILabel, UIButton etc ... sont) dans IB. Ensuite, pour chaque objet, définissez sa classe sur le contrôleur correct, et vous aurez accès à tous les points de vente et actions corrects. Vous pouvez ensuite connecter les contrôleurs dans un seul UIViewController pour contrôler leur interaction.

La méthode préférée, cependant, serait NIbs séparés pour les contrôleurs séparés, et de les avoir tous sous-classes UIViewController. Si vous passez à iOS5, ils ont remplacé les NIB dans IB avec Storyboards. Ceux-ci vous permettent d'avoir des UIViewControllers séparés dans un seul fichier IB, mais ils sont plus efficaces dans l'utilisation de la mémoire car ils ne conservent pas toute l'arborescence de l'objet en mémoire.

+0

Je vais regarder le storyboard. Je vous remercie! – RLH

+0

Après avoir lu cet article (http://toxicsoftware.com/uistoryboard-issues/) je suis arrivé à la conclusion que je préférerais éviter d'utiliser le storyboard. Considérez ceci comme une question pré-storyboard. – RLH

+0

Ensuite, plusieurs objets de contrôleur dans votre NIB unique, ou NIB et VCs séparés est le chemin à parcourir. – ikuramedia

1

Ceci est une question assez chargée. Mais, d'après mon expérience, j'ai trouvé que IB me cause plus de maux de tête que ça ne le vaut dans des situations compliquées comme celle-ci. Je recommande d'oublier IB pour ce scénario et de créer simplement vos vues dans le code. IB est vraiment censé alléger certaines des tâches les plus banales de la mise en page, du style, etc.

Je recommande que toutes vos vues soient placées dans leurs propres fichiers de projet car cela a payé pour moi ... rien de plus douloureux que de faire défiler des milliers de lignes de code pour trouver ce dont vous avez besoin ... et pire encore, d'utiliser ce widget effondrement de code terrible dans la gouttière.

+0

Je suis d'accord, c'est une question un peu chargée. Cependant, il y a des développeurs qui doivent travailler en équipe et, ensemble, ils doivent travailler sur de grands projets.Je suppose que certains, ou des groupes d'individus ont mis au point ces types de lignes directrices pour leur propre santé mentale. Oui, j'ai considéré votre itinéraire, cependant, décrivant tous ces écrans dans le code prendrait beaucoup de temps. Mes objets ne bougent presque jamais dans leurs vues respectives, donc IB semble être un outil de contour optimal. Cependant, j'avais envisagé de créer des contrôleurs/Nib séparés pour chacun d'entre eux. J'espérais éviter cette affaire. – RLH

Questions connexes