2009-12-04 2 views
5

Je viens d'une organisation de développement java d'entreprise où nous avons développé des couches réutilisables bien séparées. Des couches de persistance, des couches de service, etc.L'architecture d'une application iPhone complexe?

Maintenant, je cherche des exemples d'applications pour iPhone ou de la documentation sur la façon d'architecturer des projets iPhone complexes. La plupart des livres & des exemples de pomme vous montrent le code très limité & l'architecture. Ils ne sont pas utilisables imo. Ce que je cherche également est comment installer un système de construction à intégration continue qui exécute tous mes tests unitaires sur le code checkin & rapporte les résultats du test unitaire à un système où nous pouvons voir les résultats. Pour nos projets java, nous utilisons svn, mvn & sonar pour cela. Quel est l'équivalent d'Apple pour cette configuration? Est-ce même possible? Donc, pour résumer mes questions:
Q1: Existe-t-il des exemples ou des livres sur l'architecture complexe d'un projet iPhone?
Q2: Comment configurer un système de construction à intégration continue?

Répondre

6

Quelle est la complexité d'un exemple que vous aimeriez?This question liens vers un certain nombre d'applications iPhone non Apple open source, y compris my own. Certaines applications sont relativement complexes.

En ce qui concerne le design, je recommande fortement le livre Cocoa Design Patterns. Bien que ce ne soit pas strictement pour l'iPhone (étant donné les débuts de Cocoa à NeXT et la présence plus récente sur Mac), les motifs de conception couverts sont au cœur de l'architecture des frameworks Cocoa et des applications Cocoa.

Je vous recommande également de payer pour le WWDC 2009 videos et de regarder les sessions «Conception de l'interface utilisateur iPhone», «Efficacité de l'application iPhone» et «Prototypage des interfaces utilisateur iPhone». Il y a beaucoup de bonnes suggestions pour l'architecture des applications iPhone dans ces sessions.

J'ai utilisé des tests unitaires avec mes applications, mais je n'ai fait aucune forme de construction à intégration continue. Cependant, this question semble avoir beaucoup de bonnes informations sur l'intégration continue avec Xcode.

5

L'héritage de l'iPhone remonte à OpenStep par NeXT Computer. Pendant un certain temps, l'accent principal de NeXT était personnalisé, les applications d'entreprise. Les technologies qui sont en jeu sur l'iPhone sont bien éprouvées dans les environnements d'entreprise. NeXT était l'un des défenseurs orginal de la technologie d'objet, des modèles, et du MVC en particulier.

Cela dit, une partie de ce qui était disponible dans Openstep a maintenant disparu. NeXT avait un système ORM radicalement avancé (Enterprise Objects Framework - http://en.wikipedia.org/wiki/Enterprise_Objects_Framework) qui, même s'il est encore utilisé en interne chez Apple et les pouvoirs iTunes/etc, est maintenant obsolète pour les clients utilisant Objective-C (une version Java existe toujours). Un ORM lite, Core Data (http://developer.apple.com/macosx/coredata.html), a pris sa place et est maintenant disponible sur l'iPhone. SQLite (qui est génial) est également livré sur l'iPhone et disponible pour les développeurs.

Une autre mouche dans la pommade est que la version actuelle de XCode pour l'iPhone a une portée limitée des sous-projets/frameworks, il est donc plus difficile de partitionner le code réutilisable que c'était le cas auparavant. Tim Wood, d'Omni, fournit quelques détails sur la façon de gérer les frameworks dans XCode sur l'iPhone (http://blog.omnigroup.com/2008/10/01/using-frameworks-in-iphone-applications/) Malheureusement, le processus n'est pas aussi simple qu'il devrait l'être. Je ne suis pas sûr de ce que les livres sont disponibles, mais presque n'importe quel ancien développeur Openstep va avoir une expertise en développement d'entreprise. Vous pourriez envisager d'en intégrer un dans votre projet pour aider les choses.

svn et mvn sont disponibles/empaquetés sur OS X. Il existe également des options pour tirer dans d'autres paquets open source grâce à des systèmes tels que fink ou MacPorts:

Il existe également plusieurs options de structure qui prennent en charge TDD. Test Driven Design for iPhone Native apps

Il ne ressemble pas à des groins sonar Objectif-C pour le moment. Selon vos options, peut-être pourriez-vous développer un module pour cela?