iPhone-dev: Hur tänkta och designa en ny app?

Tråden skapades och har fått 15 svar. Det senaste inlägget skrevs .
1

Så då var kursen över jag tycker själv att jag löste sista uppgiften dåligt och jag håller nu på att analyser varför.
Jag byggde den inte som en äkta MVC-app - detta gjorde hela processen svårare och krångligare än nödvändigt.
Jag valde sqlite som lagring istället för CoreData.

Så nu tänkte jag designa min app från början. Tänka först och koda sedan, som man ska göra.

Här är hur jag har tänkt:
http://www.margin.se/mhimg/blogrv2.gif

Som ni ser saknas appDelegate-klassen.
Första frågan jag har är var passar denna in?

När jag skapar denna app tänkte jag basera den på en window-based app med CoreData. Sedan skapa klasserna allt eftersom, vilket skulle leda till att MHRootViewController skulle bli utan nib.
All CoreData kod hamnar i appDelegate.
Ska jag flytta den till MHRootView?
Tanken är som ni ser att alla kommunikation ska ske via RootViewController.

Frågan är egentligen hur ska jag tänka vid uppläggandet av en ny app.
Jag vet då minst tre som kan svara på den frågan.

  • Medlem
  • Stockholm
  • 2010-08-28 22:26

Min första rekommendation är att du kikar på:

https://deimos.apple.com/WebObjects/Core.woa/BrowsePrivately/adc.apple.com.4092349126.04109539109.4144345609?i=1812791157

från WWDC 2010. Där finns en del utgångspunkter för diskussion!

Vänligen, Ylan

  • Medlem
  • Umeå
  • 2010-08-29 00:05

MHRootViewController?
Det låter som att du tänker använda ett navigationsbaserat gränssnitt?
Varför inte börja med att välja mallen för "navigaion based application" i xcode.
Om du har core-data förbockad så ger apple dig ett stort försprång gällande core-data.

@ylan: Den ska jag titta på!
@gabra: Är inte alla program navigationsbaserade?

Det jag undrar mest nu är var appDelegate kommer in i bilden.
Mycket har jag att lära kring MVC.

  • Medlem
  • Umeå
  • 2010-08-29 10:25
Ursprungligen av Mattias Hedman:

@gabra: Är inte alla program navigationsbaserade?

Nej ;).
Templaten "navigation-based application" sätter upp en UINavigationController åt dig. Det vill säga en app som man navigerar genom en trave av views, som i iPod-appen eller Settings. Som förval sätter XCode första vyn som en tableView.

Jag vill rekommendera Cocoa Dev Central som en jättebra resurs för nybörjare. Lycka till!

Jag vill helt enkelt lära mig tankeprocessen innan jag börjar koda, för att på så sätt få en effektivare kod och effektivare kodning.

Ursprungligen av Mattias Hedman:

Här är hur jag har tänkt:
http://www.margin.se/mhimg/blogrv2.gif

Som ni ser saknas appDelegate-klassen.
Första frågan jag har är var passar denna in?

När jag skapar denna app tänkte jag basera den på en window-based app med CoreData. Sedan skapa klasserna allt eftersom, vilket skulle leda till att MHRootViewController skulle bli utan nib.
All CoreData kod hamnar i appDelegate.
Ska jag flytta den till MHRootView?
Tanken är som ni ser att alla kommunikation ska ske via RootViewController.
)

I de flesta fall fungerar standardmallen utmärkt. Det är först om du börjar göra något väldigt avancerat, exempelvis vill ha flera persistent stores och liknande som du ens behöver fundera på vad koden gör. Det som ligger där är mest glue code för att få det att fungera. Vad som är mer intressant är var du lägger kod för att använda Core Data.

Dock skulle nog de riktiga puristerna hävda att delegaten enbart ska användas till metoder från UIApplicationDelegate.

  • Medlem
  • Stockholm
  • 2010-08-29 15:02

En risk med att använda mallarna och IB är att det är så skenbart enkelt, och får en att känna att Obj-C är ett språk på högre nivå än det faktiskt är. Och när man väl stöter på patrull är man helt förlorad i Apples källkod och nibbfiler.

Samma problem ser jag med dotsyntaxen för properties i Obj-C 2.0. Skenbart enkelt, men det kräver verkligen att man förstår hur de olika syntetiserade accessormetoderna fungerar och att det är metodanrop man gör. (Dessutom kan man lätt röra ihop C:s dotsyntax för structs med Obj-C 2.0:s meddelanden)

Jag testade att göra en app helt utan nibb, och det är på ett sätt enklare. Det blir förvisso mer kod, men det är lättare att haja vad som händer.

Slutligen rekommenderar jag Kochans Programming in Objective-C 2.0. Jag har själv inte läst 2.0-versionen, men föregångaren var så pass bra att jag inte kan tänka mig att uppföljaren skulle kunna bli dålig. Kochan faller inte för frestelsen som så många tutorialförfattare gör att den som följer instruktionerna skall kunna prestera något snyggt på skärmen direkt, utan han går igenom språket metodiskt, med övningar helt utan grafiskt gränssnitt (med reservation för att jag inte läst den senaste upplagan).

Vänligen, Ylan

  • Skribent
  • Sollentuna
  • 2010-10-29 03:58
Ursprungligen av Ylan:

Slutligen rekommenderar jag Kochans Programming in Objective-C 2.0. Jag har själv inte läst 2.0-versionen, men föregångaren var så pass bra att jag inte kan tänka mig att uppföljaren skulle kunna bli dålig. Kochan faller inte för frestelsen som så många tutorialförfattare gör att den som följer instruktionerna skall kunna prestera något snyggt på skärmen direkt, utan han går igenom språket metodiskt, med övningar helt utan grafiskt gränssnitt (med reservation för att jag inte läst den senaste upplagan).

Vänligen, Ylan

Enligt de beskrivningar jag har sett förutsätter ovanstående bok inga förkunskaper i programmering. Är den läsvärd även för mig med programmerarbakgrund (dock ny på Objective-C och iOS-utveckling), eller kommer det kännas som slöseri med pengar om jag köper den? Om det senare, känner du till nån bra bok som fokuserar på de iOS-specifika ramverken lite mer?

  • Medlem
  • Stockholm
  • 2010-10-30 06:05
Ursprungligen av Vassius:

Enligt de beskrivningar jag har sett förutsätter ovanstående bok inga förkunskaper i programmering. Är den läsvärd även för mig med programmerarbakgrund (dock ny på Objective-C och iOS-utveckling), eller kommer det kännas som slöseri med pengar om jag köper den? Om det senare, känner du till nån bra bok som fokuserar på de iOS-specifika ramverken lite mer?

Det beror kanske på vad du menar med programmerarbakgrund. Har du såväl C som objektorienterad programmering och kan hantera minne manuellt så kanske det räcker med gratisturorials och Hillegass. Fördelen med Kochan är att han hanterar C och Obj-C som en enhet och förklarar språket i grunden.

Jag tror, utan att veta bestämt, att man lätt kan gå vilse i Apples ramverk, och att man framförallt, som jag skrev tidigare i tråden, kan luras att tro att Obj- C är ett språk på högre nivå än det faktiskt är.

Vänligen, Ylan

  • Skribent
  • Sollentuna
  • 2010-10-30 07:38

Jag har inte jobbat med programmering, men i och med att jag har pluggat datavetenskap på högskolan så har jag ganska god grundförståelse för programmering. Min praktiska erfarenhet sträcker sig mest till mindre hobbyprojekt och scripting i yrkeslivet.

Det låter som att jag skulle kunna ha nytta av boken trots allt, för det skadar ju aldrig att ta sig en rejäl djupdykning i ett språk. Jag är lite sugen, men vi får se hur jag gör. Man måste ju ha tid att läsa den också.

Tack för hjälpen!

Ursprungligen av Ylan:

Det beror kanske på vad du menar med programmerarbakgrund. Har du såväl C som objektorienterad programmering och kan hantera minne manuellt så kanske det räcker med gratisturorials och Hillegass. Fördelen med Kochan är att han hanterar C och Obj-C som en enhet och förklarar språket i grunden.

Jag tror, utan att veta bestämt, att man lätt kan gå vilse i Apples ramverk, och att man framförallt, som jag skrev tidigare i tråden, kan luras att tro att Obj- C är ett språk på högre nivå än det faktiskt är.

Vänligen, Ylan

Trevlig tråd. Den gav mig lite input för den kurs som jag för tillfället går på

Min "basicfråga": Hur/I vilket verktyg ritade du klassdiagrammet? Jag letar ett för att dokumntera min klassstruktur.

Edit: Jag hittade just TopCode UML som verkar rätt trevligt
http://www.topcoder.com/tc?module=Static&d1=dev&d2=umltool&d3=description

Ursprungligen av BlackSmp:

Min "basicfråga": Hur/I vilket verktyg ritade du klassdiagrammet? Jag letar ett för att dokumntera min klassstruktur.

Det ser väldigt mycket ut som Omni Graffle.

Det är Omni Graffle.

Tack:)

1
Bevaka tråden