IPhone SDK (12-14) 2008/2009

Z JASR Wiki

<<< Powrót do Tworzenie aplikacji wielowarstowych 2008/2009

Spis treści

Wprowadzenie

iPhone SDK to zbiór aplikacji i bibliotek wymaganych do tworzenia aplikacji na urządzenia iPhone i iPod Touch.

Wymagania sprzętowe

Do korzystania z iPhone SDK wymagany jest Macintosh z procesorem Intel, oraz system operacyjny Mac OS X w wersji conajmniej 10.5 Leopard.

Zasady korzystania z iPhone SDK

Aby uzyskać dostęp do iPhone SDK 2.2.1, dokumentacji, przykładów i oficjalnych tutoriali (także video tutoriale) należy zarejestrować się na stronie http://developer.apple.com/iphone/ iPhone SDK pozwoli na tworzenie aplikacji przy użyciu narzędzi Xcode (IDE), Interface Builder (tworzenie interfejsów), Instruments i Shark (mierzenie wydajności aplikacji, wycieki pamięci), Symulator iPhone. Sam iPhone SDK nie pozwala na instalowanie aplikacji na rzeczywistym urządzeniu!!!

Wykupienie rocznej licencji do iPhone Developer Program w wersji Standard ($99) daje następujące możliwości

  • Instalacja aplikacji na rzeczywistych urządzeniach
  • Dostęp do najnowszych nie oficjanlych wersji iPhone SDK (aktualnie iPhone SDK 3.0 Beta 5)
  • Możliwość sprzedawania aplikacji przy pomocy Apple Store

Wykupienie licencji w wersji Enterprise ($299) pozwala dodatkowo na samodzielne rozprowadzanie aplikacji wewnątrz firmy na max. 100 urządzeniach (przydatne w rozwiązaniach korporacyjnych do tworzenia wewnętrznych aplikacji)

Hardware

Najważniejsze parametry:

  • Wielodotykowy ekran 480x320
  • Procecor ARM (ok. 400MHz)
  • Akceleracja grafiki (PoverVR)
  • 128MB RAM (aplikacje mają dostęp do ok. 22MB, brak automatycznego swapowania!!!)
  • Akcelerometr
  • WiFi
  • GPS (tylko iPhone 3G)
  • aparat (tylko iPhone >=)
  • głośnik (tylko iPhone >=)

Objective-C

Objective-C to połączenie jezyka C z SmallTalkiem. Pozwala na korzystanie z całej składni języka C dodając obiektowość inne swoje rozszerzenia.

Podstawy języka

Wywoływanie metod obiektów:

[obiekt metodaBezParametrowa];
[obiekt metodaZ: jednymParametrem];
[obiekt metodaZ: pierwszym i: drugimParametrem];
[obiekt metoda: nieograniczoną, liczbą, parametrów, nil];
[[obiekt zwrocInnyObiekt] iWywolajNaZwroconymObiekcieMetode];

Stringi:

NSString *nowyString = @"Hello world";
NSString *pustyString = [NSString string];
NSString *formatowanyString = [NSString stringWithFormat: @"To jest %d string z %d", 3, 4];
NSString *konkatenacjaStringów = [nowyString stringByAppendingString: formatowanyString];

Jeżeli obiekty zdefiniują akcesory get i set zamiast korzystać z wywoływania metod, można korzystać z notacji kropki

[obiekt setMojLicznik: [obiekt mojLicznik] + 1];
obiekt.mojLicznik = obiekt.mojLicznik + 1;

Deklaracja klas

Wszystkie metody są wirtualne.

Plik nagłówkowy .h

@interface NowaKlasa : KlasaBazowa <ewentualna lista intefejsow ktore implementujemy> {

   int poleInstacji;
   NSString* poleInstacji2;

}

@property(readwrite,assign) int poleInstacji;

+(id) nowaKlasa; // Konstruktor
+(int) innaMetodaKlasowa;

-(id) init; // Inicjalizacja

-(void) innaPublicznaMetoda;
-(NSString *) publicznaMetodaZ: (int) jednymParametrem;

@end

@protocol PrawieIntefejs <PrawieInterejs2, PrawieInterfejs3>
-(int) zwrocCos;
@end

Plik implementacji .m

@interface NowaKlasa (Private)
-(int) prywatnaMetoda;
@end
@implementation NowaKlasa

@synthesize poleInstacji; // automatyczne generowanie, setterów i getterów

+(id) nowaKlasa
{
   return [[[self alloc] init] autorelease];
}

+(id) init
{
   if( ! (self=[super init]) )
      return nil;
   // inicjalizacja
}
// inne metody

@end

Zarządzanie pamięcią

Wszystkie klasy w Objective-C powinny dziedziczyć po NSObject. Dzięki temu otrzymują odrazu retain couter służący do zarządzania pamięcią.

NSString *nowyString; // nil
nowyString = @"bla bla"; // @"cos" zwraca obiekt ustawiony do pool autorelease, i ma retain counter ustawiony na 1
nowyString = @"aaa"; // pamięć nie ucieka, bo autorelease powoduje,
                     // że na obiekcie zwroconym przez @"" zostanie później wykonane release

zapiszGdziesObiekt = [nowyString retain]; // retain counter ++
// ... jak skoncze z niego korzystac
[zapiszGdziesObiekt release]; // retain counter --, gdy osiagnie 0 wywolywane jest dealloc

Dodatkowe rozszerzenia

foreach

for (TypObiektu obiekt in tablica) {
 // ciało pętli
}

typ logiczny

BOOL typlogiczny = YES; // TRUE, true lub NO, FALSE, false

import lepszy include

#import <jakisNaglowek.h>
#import "lokalnyNaglowek.h"

// zamiast

#ifndef NAGLOWEK_H
#define NAGLOWEK_H

#include <jakisInclud.h>

#endif

Odnośniki do materiałów o objective-c

Konfiguracja środowiska pracy

Prezentacja następujących materiałów:

  • Narzedzia z SDK
  • Konfiguracja certyfikatów do podpisywania aplikacji

Tworzenie aplikacji w iPhone SDK

Specyfika aplikacji

Aplikacje nie mogą pracować w tle. Jednocześnie w pamięci może pracować tylko jedna aplikacja!

Prezentacje

Prezentacja następujących materiałów:

Osobiste