Az iPhone fejleszt s alapjai -...

47
Az iPhone fejlesztés alapjai I. előadás

Transcript of Az iPhone fejleszt s alapjai -...

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

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

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

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

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

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

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

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

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

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

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

• 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

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

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

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

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

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

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

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

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

Ö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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ú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

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

Ú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

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

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

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

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

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

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

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

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

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

Az eredmény