![Page 1: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/1.jpg)
Az iPhone fejlesztés alapjai
I. előadás
![Page 2: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/2.jpg)
A ponte.hu Kft.
• 2001 óta a piacon
• Web iPhone, Android, Nokia és Windows mobile fejlesztések
• Újszerű megoldások és technológiák keresése
![Page 3: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/3.jpg)
Gyakorlat
• 4x3x45 perc, és egy kiegészítő bemutató előadás• Közösen fogunk programozni, több témakört átívelve
Teszt• 1x45 perc• Az elméleti anyagból, a verseny a laborhelyekért megy
A kurzus menete
Elméleti órák• 3x45+2x45 perc• Elméleti háttér és programozási alapok
![Page 4: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/4.jpg)
A kurzus felépítése
Gyakorlat
API
Eszközök
Elmélet
Nyelvi elemek
Szemlélet
![Page 5: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/5.jpg)
A mai előadás témái
• I. Áttekintés
• Az iPhone története
• Az iPhone fejlesztés eszközei és menete
• II. Az Objective-C nyelv alapjai
• Objektum orientáltság
• III. Memória kezelés
• IV. Nézzünk meg egy példát
![Page 6: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/6.jpg)
I. Áttekintés
![Page 7: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/7.jpg)
Az iPhone története
• 2007. Első iPhone kiadásaNagyon korlátozott: 2G, nincs alkalmazás telepítés, nincs GPS, nincs multitask, de forradalmian új felhasználói felület.
• 2008. iPhone 3GNagyon sok fájó pontot javít, megjelenik az AppStore
• 2009. iPhone 3GSRáncfelvarrás, nagyobb processzor teljesítmény, digitális iránytű (Augmented Reality), később multitask
• 2010. iPad, mad iPhone 4Nagy felbontású kijelző, giroszkóp
![Page 8: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/8.jpg)
Miért forradalmi?
Felhasználói élmény
Korlátolt multitask
AppStore
Kötött készülékek
Korlátozottfunkciók
Egyszerű kezelés
Szeparált fájlrendszer
Multitouch
Egyetlen gomb
Animált felületek
Nincs külső
telepítés
Ellenőrzés
Minimális fragmentáció
Megfelelő teljesítmény
Minimális testreszabás
![Page 9: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/9.jpg)
Az iPhone számokban
• Több mint 120 millió eladott iOS készülék
• Több mint 250 000 alkalmazás
• Több mint 10 000 000 000 letöltés
• Tulajdonosok 50%-a már vásárolt alkalmazást
![Page 10: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/10.jpg)
Miért az Apple a minta?
Others31%Apple
3%
Nokia, Samsung, LG66%
Mobile készülékek 2010 I. félév
Others29%
Apple39%
Nokia, Samsung, LG32%
Profit megoszlás 2010 I. félév
Forrás: Fortune
![Page 11: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/11.jpg)
• Támogatott eszközök:
• iPhone 2G, 3G, 3GS, 4• iPod touch 1.-4. generáció• iPad
• Minimális fragmentáció
• iPhone SDK a fejlesztői környezet(csak Mac)
• Natív alkalmazások Objective-C nyelven
Az iOS platform
![Page 12: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/12.jpg)
Interface Builder
• Felületek építése
• Nem kötelező, de hasznos
A fejlesztés eszközei
Xcode IDE
• A központ
• Debugger és Profiler alkalmazások
iPhone Simulator
• Nem emulátor
• Jó teljesítmény
• Nem teljes
![Page 13: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/13.jpg)
A fejlesztés menete
Koncepció
Specifikáció
Arculat
Fejlesztés
Kódolás
Felület építés
Tesztelés
Szimulátor
Készülék
![Page 14: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/14.jpg)
II. Objective-C
![Page 15: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/15.jpg)
A nyelv kialakulása
• 1980-as évek elején a Stepstone cég alakította ki a Smalltalk alapján
• 1988-ban a NeXT licencelte a technológiát a NeXTstep rendszere alapjaként, amely később a Mac OS X alapja lett
• A C nyelv objektum orientált kiegészítéseként született, de nem azt az irányt követi, mint a C++ (Simula)
• C++: obj->method(argument);
• Objective-C: [obj method: argument];
![Page 16: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/16.jpg)
Osztályok
@interface classname : superclassname { // instance variables}+classMethod1;+(return_type)classMethod2;+(return_type)classMethod3:(param1_type)param1_varName; -(return_type)instanceMethod1:(param1_type)param1_varName :(param2_type)param2_varName;
-(return_type)instanceMethod2WithParameter:(param1_type)param1_varName andOtherParameter:(param2_type)param2_varName;@end
@implementation classname+classMethod { // implementation}-instanceMethod { // implementation}@end
Classname.h
Classname.m
![Page 17: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/17.jpg)
Mezők elérése
@interface MyFirstClass : NSObject{ @public int publicNumber;
@protected // Protected is the default char protectedLetter;
@private bool privateBool;}@end
@implementation MyFirstClass-‐ myMethod { publicNumber = 3; protectedLetter = 'Q'; privateBool = NO;}@end
@implementation OtherClass-‐ (id)myMethod2 { MySecondClass *other; other = [[MyFirstClass alloc] init]; other-‐>publicNumber = 42;}@end
![Page 18: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/18.jpg)
Metódusok elérése
@interface MyClass { // My Instance Variables}
-‐ (void)myPublicMethod;
@end
@interface MyClass()
-‐ (void)myPrivateMethod;
@end
@implementation MyClass
-‐ (void)myPublicMethod { // Implementation goes here}
-‐ (void)myPrivateMethod { // Implementation goes here}
@end
A metódus hívások üzenet küldésekként vannak kezelve, csak futási idejű a hozzárendelés, ezért nincs igazi privát metódus
![Page 19: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/19.jpg)
Konstruktorok
MyObject *o = [[MyObject alloc] init];
-(id) init { if ( self = [super init] ) { // perform initialization of object here } return self;}
Az objektumokat mindig mutatókkal érjük el
Alap konstruktor felül definiálása
-(id) initWithX: (int)xCord y:(int)yCord { if ( self = [super init] ) { width=xCord; height=yCord; } return self;}
Konstruktor paraméterekkel
![Page 20: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/20.jpg)
Öröklődés
@interface Car : Vehicle {
}@end
@protocol Motoros-(int)getUrtartalom;@end
Egyszeres öröklődés
Többszörös öröklődés helyett protokollok
@interface Car : Vehicle <Motoros>{
}@end
Protokoll megvalósítás
![Page 21: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/21.jpg)
III. Memóriakezelés
![Page 22: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/22.jpg)
Kézi kezelés
• Hibalehetőségek: Memory leak és Bad Access
• Kiszámítható teljesítmény, de munkás
• Statikus és dinamikus elemző eszközök
GC
• Nem kell foglalkozni a memória felszabadítással
• De gyakorlatilag nem is lehet
• Kevesebb hibalehetőség, de kevésbé hatékony
Nincs Garbage Collection
![Page 23: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/23.jpg)
Retain...Release
-(void)doSomething{! SomeObj* someObject=[[SomeObj alloc] init];! .! .! do something with the object! .! .! [someObject release];}
-(void)useSomething:(NSString*)someObject{! [someObject retain];! myObject=someObject;}
-(void)dontNeedAnyMore{! [myObject release];! myObject=nil;}
allocrefainCount=1
retainrefainCount++
releaserefainCount--
doSomething
retainCount==0?
No
dealloc
Yes
![Page 24: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/24.jpg)
Property
-(void) setText:(NSString *)textValue{ if (textValue != text) { [textValue retain]; [text release]; text = textValue; }}
Hogy néz ki egy egyszerű setter?
#import <Foundation/Foundation.h>
@interface SomeObject : NSObject {! NSString* text;}@property (nonatomic,retain) NSString* text;@end
#import "SomeObject.h"
@implementation SomeObject@synthesize text;
@end
SomeObject.h SomeObject.m
Mindezeket megcsináltathatjuk a fordítóval is!
![Page 25: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/25.jpg)
Property
! SomeObject* someObject=[[SomeObject alloc] init];
! someObject.text=@"hello";
! NSString* localText=someObject.text;
Hogyan használjuk más osztályokban?
@property (nonatomic,retain) NSString* text;
További lehetőségek
• nincs nonatomic: alaptípus (pl: int)• readonly: csak getter készül• assign: nincs retain/release, szimpla értékadás• copy: új példány készítése
![Page 26: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/26.jpg)
Autorelease Pool
• Az eddigi modell jól működik tagváltozók esetében.
• Viszont lokálisan felhasznált változók, vagy főleg API hívások lokálisan használt eredményei esetén ez nagyon macerás megoldás (mindenre release)
Megoldás: Autorelease Pool
• Az autoreleaselt objektumoknál nem kell foglalkozni a felszabadítással, de csak egy cikluson belül érvényes!
NSString* test=@"test";NSLog(test);
test=[NSString stringWithFormat:@"test: %d",2];NSLog(test);
! SomeObject* someObject=[[SomeObject alloc] init];! [someObject autorelease];
![Page 27: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/27.jpg)
Autorelease Pool működése
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Do Something
[pool drain];
Start
End
![Page 28: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/28.jpg)
Memória kezelési szabályok
Főszabály
• Azokat az objektumokat kell release, vagy autorelease-elni, amelyek a birtokunkban vannak
• Egy objektum akkor kerülhet a birtokunkba, ha a metódus neve, amivel létrehoztuk tartalmazza az alloc, new vagy copy szavakat (pl. alloc, newObject, mutableCopy.), vagy retain-t hívtunk az objektumra.
• Az objektumot tulajdonjogát, akkor engedjük el, ha release, vagy autorelease-t (releaseld valamikor a jövőben) hívunk rajta.
![Page 29: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/29.jpg)
Build and Analyze
• Bár a fenti szabályok nem követhetetlenek, nagyon könnyen idézhetünk elő nehezen megtalálható hibákat.
• Ha kimaradt egy release, akkor memory leaket okoztunk, aminek nincs közvetlen hatása, csak egyszer elfogy a memória.
• Ha egyel több release van, vagy utána akarunk hozzáférni, akkor kapunk egy BAD_ACCESS hibaüzenetet, amit szintén nehéz megtalálni, mert ki tudja miért volt már a téves felszabadítás.
• Statikus analizátor: Xcode Build/Build and Analyze
![Page 30: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/30.jpg)
C típusú memóriakezelés
• Az Objective-C a C kiterjesztése, minden, ami működik C-ben, az működik itt is.
• Ez sokszor nem a legjobb megoldás, mert nem objektum orientált és még könnyebb hibázni, könnyen okozhatunk buffer overflow-t.
• Viszont adott esetben nagyon gyors és helytakarékos
! typedef struct{! ! int x;! ! int y;! } Point;!! Point* points;
! points=malloc(100*sizeof(Point));
! points[0].x=0;! points[0].y=0;! points[99].x=0;! points[99].y=0;
! free(points);
![Page 31: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/31.jpg)
III. Gyakorlat
![Page 32: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/32.jpg)
Mit fogunk csinálni?
• Egyszerű OOP feladat
• Van egy ős protokoll (Shape), amelynek az a specialitása, hogy lekérdezhető a területe
• Ezt megvalósítja két osztály Square, Circle, amelyeket oldalhosszukkal és sugarukkal inicializálunk
• Van egy Calculator osztály, amely egy statikus metódusban készít egy Circle-t és egy Square-t, majd a területüket összeadja
![Page 33: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/33.jpg)
Az Xcode megnyitása
![Page 34: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/34.jpg)
Új projekt létrehozása
![Page 35: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/35.jpg)
Az Xcode képernyője
![Page 36: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/36.jpg)
Új fájl hozzáadása
![Page 37: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/37.jpg)
Adjunk fájlokat a grouphoz
![Page 38: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/38.jpg)
Shape.h
#import <UIKit/UIKit.h>
@protocol Shape-(double)getArea;@end
![Page 39: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/39.jpg)
Square.h
#import <Foundation/Foundation.h>#import "Shape.h"
@interface Square : NSObject <Shape>{! double sideLength;}
-(id)initWithSide:(double)length;
@end
![Page 40: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/40.jpg)
Square.m
#import "Square.h"
@implementation Square
-(id)initWithSide:(double)length{! self = [super init]; if ( self ) {! ! sideLength=length;
}! return self;}
-(double)getArea{! return sideLength*sideLength;}
@end
![Page 41: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/41.jpg)
Circle.h
#import <Foundation/Foundation.h>#import "Shape.h"
@interface Circle : NSObject <Shape>{! double circleRadius;}
-(id)initWithRadius:(double)radius;
@end
![Page 42: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/42.jpg)
Circle.m
#import "Circle.h"
@implementation Circle
-(id)initWithRadius:(double)radius{! self = [super init]; if ( self ) {! ! circleRadius=radius; }! return self;}
-(double)getArea{! return circleRadius*circleRadius*M_PI;}
@end
![Page 43: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/43.jpg)
Calculator.h
#import <Foundation/Foundation.h>
@interface Calculator : NSObject {
}+(double)calculate;
@end
![Page 44: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/44.jpg)
Calculator.m
#import "Calculator.h"#import "Circle.h"#import "Square.h"
@implementation Calculator
+(double)calculate{
! Circle* circle=[[Circle alloc] initWithRadius:2.0];! Square* square=[[Square alloc] initWithSide:2.0];!! id<Shape> shapes[2]={circle,square};! double sum=0;! for (int i=0;i<2;i++){! ! sum+=[shapes[i] getArea];! ! NSLog(@"i: %d %f",i,[shapes[i] getArea]);! }
! [circle release];! [square release];! return sum;}
@end
![Page 45: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/45.jpg)
AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch.
! double result=[Calculator calculate];! NSString* resultString=[NSString stringWithFormat:@"result: %f",result];! UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:resultString ! ! ! ! ! ! delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];! [alert show];! [alert release];!
[window makeKeyAndVisible]; return YES;}
![Page 46: Az iPhone fejleszt s alapjai - users.nik.uni-obuda.huusers.nik.uni-obuda.hu/vamossy/iPhone2011/obuda_iphone_tanfolyam_1.pdf3% Nokia, Samsung, LG 66% Mobile készülékek 2010 I. félév](https://reader031.vdocuments.net/reader031/viewer/2022022108/5c01e17e09d3f2377a8dfbff/html5/thumbnails/46.jpg)
Az eredmény