2009-12-04 8 views
5

Ich komme von einem Unternehmen Java-Entwicklungsorganisation, wo wir Entwicklung in gut getrennte wiederverwendbare Schichten. Persistency Schichten, Service-Schichten, etc etc.Eine komplexe iPhone-Anwendung entwerfen?

Nun, ich bin auf der Suche für iPhone Beispiel Apps oder Dokumentation, wie die Architektur komplexe iPhone-Projekte. Die meisten Bücher & Apple-Beispiele zeigen Ihnen sehr begrenzten Code & Architektur. Sie sind nicht imo verwendbar.

Was ich auch suche, ist Informationen darüber, wie man ein Continuous-Integration-Build-System einrichtet, das alle meine Komponententests auf Code-Check-in ausführt & meldet die Unit-Testergebnisse an ein System, wo wir die Ergebnisse sehen können. Für unsere Java-Projekte verwenden wir dafür das svn, mvn & Sonar. Was ist Apple für dieses Setup? Ist es überhaupt möglich?

Also, um meine Fragen zusammenzufassen:
F1: Gibt es Beispiele oder Bücher über komplexe iPhone-Projektarchitektur?
F2: Wie richten wir ein Continuous-Integration-Build-System ein?

Antwort

6

Wie komplex ein Beispiel möchten Sie?This question verweist auf eine Reihe von Nicht-Apple-Open-Source-iPhone-Anwendungen, einschließlich my own. Einige Anwendungen sind relativ komplex.

Soweit das Design geht, würde ich das Buch Cocoa Design Patterns empfehlen. Obwohl es sich nicht unbedingt um das iPhone handelt (angesichts der Anfänge von Cocoa bei NeXT und neuerer Präsenz auf dem Mac), sind die behandelten Designmuster ein Kernstück der Architektur der Cocoa-Frameworks und Cocoa-Anwendungen.

Ich würde auch empfehlen für die WWDC 2009 videos bezahlen und beobachten Sie die Sitzungen "iPhone User Interface Design", "Effektive iPhone App-Architektur" und "Prototyping iPhone User Interfaces". Es gibt viele gute Vorschläge für die Architektur von iPhone-Anwendungen in diesen Sitzungen.

Ich habe Komponententests mit meinen Anwendungen verwendet, aber ich habe keine Form der kontinuierlichen Integration gebaut. Jedoch scheint this question viele gute Informationen über die fortlaufende Integration mit Xcode zu haben.

5

Das Erbe des iPhone geht zurück auf Openstep von NeXT Computer. Seit einiger Zeit lag der Schwerpunkt von NeXT auf kundenspezifischen Unternehmensanwendungen. Die Technologien, die auf dem iPhone zum Einsatz kommen, haben sich in Unternehmensumgebungen bewährt. NeXT war einer der ersten Befürworter von Objekttechnologie, Mustern und MVC im Besonderen.

Das heißt, einige von dem, was in Openstep verfügbar verwendet werden ist jetzt weg. NeXT hatte ein radikal fortgeschrittenes ORM-System (Enterprise Objects Framework - http://en.wikipedia.org/wiki/Enterprise_Objects_Framework), das zwar intern bei Apple noch benutzt wird und iTunes/etc antreibt, aber für Kunden, die Objective-C verwenden, veraltet ist (eine Java-Version existiert noch). Ein lite ORM, Core Data (http://developer.apple.com/macosx/coredata.html), hat seinen Platz eingenommen und ist jetzt auf dem iPhone verfügbar. SQLite (was super ist) ist auch auf dem iPhone gebündelt und für Entwickler verfügbar.

Ein weiteres Haar in der Suppe ist, dass die aktuelle Version von XCode für das iPhone ein begrenztes Verständnis von Teilprojekten/Frameworks hat, so dass es schwieriger ist, wiederverwendbaren Code zu partitionieren als früher. Tim Wood, von Omni, bietet einige Details zur Verwaltung von Frameworks in XCode auf dem iPhone (http://blog.omnigroup.com/2008/10/01/using-frameworks-in-iphone-applications/) Leider ist der Prozess nicht so einfach wie es sein sollte.

Ich bin nicht sicher, welche Bücher zur Verfügung stehen, aber fast jeder ehemaliger Openstep-Entwickler wird die Entwicklung von Unternehmen Know-how hat. Vielleicht ziehen Sie es in Betracht, in Ihr Projekt zu ziehen, um die Dinge zu unterstützen.

SVN und mvn sind verfügbar/auf OS X. gebündelt Es gibt auch Optionen für in anderen Open-Source-Pakete durch Systeme wie fink oder MacPorts ziehen:

Es gibt auch mehrere Rahmenoptionen, die TDD unterstützen. Test Driven Design for iPhone Native apps

Es sieht nicht wie Sonar Groks Objective-C zu dieser Zeit. Abhängig von Ihren Möglichkeiten könnten Sie vielleicht ein Modul dafür entwickeln?