Christopher Fairbairn, Collin Ruffenach, Johannes Fahrenkrug objective-c. podstawy full.pdf

(57401 KB) Pobierz
888148821.001.png
Spis treci
Wstp
11
Podzikowania
13
O ksice
15
Forum Author Online
19
Informacje na temat ilustracji umieszczonej na okadce
20
Cz I. Rozpoczcie pracy z Objective-C
21
1.
Twoja pierwsza aplikacja iOS
23
1.1.
Wprowadzenie do narzdzi programistycznych na platform iOS ........................................ 24
1.1.1. Dostosowanie struktur Cocoa do potrzeb urzdze mobilnych ...................................... 25
1.2.
Dostosowanie swoich oczekiwa ................................................................................................ 26
1.2.1. Specyfikacja sprztowa na koniec 2011 roku ..................................................................... 26
1.2.2. Spodziewaj si zawodnego poczenia z internetem ........................................................ 27
1.3.
Przygotowanie prostej gry Coin Toss w Xcode ......................................................................... 28
1.3.1. Wprowadzenie do rodowiska IDE firmy Apple — Xcode ............................................. 29
1.3.2. atwe uruchamianie Xcode ................................................................................................29
1.3.3. Utworzenie projektu ........................................................................................................... 30
1.3.4. Tworzenie kodu ródowego .............................................................................................. 33
1.4.
Przygotowanie interfejsu uytkownika ......................................................................................37
1.4.1. Dodanie kontrolek do widoku ............................................................................................ 38
1.4.2. Poczenie kontrolek z kodem ródowym ........................................................................ 39
4
Spis treci
1.5.
Kompilacja gry ............................................................................................................................. 43
1.6.
Uruchomienie gry ........................................................................................................................ 44
1.6.1. Wybór urzdzenia docelowego .......................................................................................... 44
1.6.2. Uywanie punktów kontrolnych do ledzenia stanu dziaajcej aplikacji ....................... 45
1.6.3. Uruchomienie gry Coin Toss w symulatorze .................................................................... 46
1.6.4. Uywanie moduu usuwania bdów ................................................................................. 47
1.7.
Podsumowanie .............................................................................................................................. 49
2.
Typy danych, zmienne i stae
51
2.1.
Wprowadzenie do aplikacji Rental Manager ........................................................................... 52
2.1.1. Podstawy aplikacji ............................................................................................................... 53
2.2.
Podstawowe typy danych ............................................................................................................. 55
2.2.1. Liczenie na palcach — liczby cakowite ............................................................................ 56
2.2.2. Liczby zmiennoprzecinkowe .............................................................................................. 59
2.2.3. Znaki i cigi tekstowe .......................................................................................................... 61
2.2.4. Wartoci boolowskie ........................................................................................................... 63
2.3.
Wywietlanie i konwersja wartoci ............................................................................................ 65
2.3.1. Funkcja NSLog() i specyfikatory formatu .......................................................................... 65
2.3.2. Rzutowanie typów i konwersja typów ................................................................................ 67
2.4.
Tworzenie wasnych typów danych ............................................................................................ 69
2.4.1. Typy wyliczeniowe .............................................................................................................. 69
2.4.2. Struktury .............................................................................................................................. 71
2.4.3. Tablice ................................................................................................................................. 73
2.4.4. Waga odpowiednich nazw ..................................................................................................75
2.5.
Ukoczenie aplikacji Rental Manager 1.0, czyli kierujemy si do App Store! ...................... 77
2.6.
Podsumowanie .............................................................................................................................. 79
3.
Wprowadzenie do obiektów
81
3.1.
Krótkie wprowadzenie do koncepcji programowania zorientowanego obiektowo .............. 82
3.1.1. Co zego jest w jzyku proceduralnym, takim jak C? ....................................................... 82
3.1.2. Czym jest obiekt? ................................................................................................................ 83
3.1.3. Czym jest klasa? .................................................................................................................. 83
3.1.4. Dziedziczenie i polimorfizm .............................................................................................. 83
3.2.
Brakujcy typ danych — id ......................................................................................................... 84
3.3.
Wskaniki i rónice pomidzy odniesieniem i wartoci typu ................................................ 85
3.3.1. Mapowanie pamici ............................................................................................................ 86
3.3.2. Pobieranie adresu zmiennej ............................................................................................... 86
3.3.3. Podanie za wskanikiem .................................................................................................. 87
3.3.4. Porównywanie wartoci wskaników ................................................................................. 88
3.4.
Komunikacja z obiektami ............................................................................................................ 89
3.4.1. Wysyanie wiadomoci obiektowi ...................................................................................... 89
3.4.2. Wysyanie wiadomoci klasie .............................................................................................90
3.4.3. Wysyanie nieistniejcych wiadomoci .............................................................................. 90
3.4.4. Wysanie wiadomoci do nil ............................................................................................... 92
3.5.
Cigi tekstowe .............................................................................................................................. 93
3.5.1. Tworzenie cigu tekstowego ..............................................................................................93
3.5.2. Wyodrbnianie znaków z cigu tekstowego ...................................................................... 94
3.5.3. Modyfikacja cigu tekstowego ............................................................................................95
3.5.4. Porównywanie cigów tekstowych ..................................................................................... 96
3.6.
Przykadowa aplikacja ................................................................................................................. 97
3.7.
Podsumowanie ............................................................................................................................ 100
Spis treci
5
4.
Przechowywanie danych w kolekcjach
101
4.1.
Tablice ......................................................................................................................................... 102
4.1.1. Budowa tablicy .................................................................................................................. 102
4.1.2. Uzyskanie dostpu do elementów tablicy ........................................................................ 104
4.1.3. Wyszukiwanie elementów tablicy .................................................................................... 105
4.1.4. Iteracja przez tablice ......................................................................................................... 106
4.1.5. Dodawanie elementów do tablicy .................................................................................... 108
4.2.
Sowniki ....................................................................................................................................... 110
4.2.1. Tworzenie sownika .......................................................................................................... 110
4.2.2. Uzyskanie dostpu do par przechowywanych w sowniku ............................................. 112
4.2.3. Dodawanie par klucz-warto .......................................................................................... 113
4.2.4. Wywietlenie wszystkich kluczy i wartoci ..................................................................... 114
4.3.
Boxing .......................................................................................................................................... 116
4.3.1. Klasa NSNumber .............................................................................................................. 117
4.3.2. Klasa NSValue ................................................................................................................... 118
4.3.3. nil kontra NULL kontra NSNull ...................................................................................... 118
4.4.
Aplikacja Rental Manager zaczyna uywa danych ..................................................................... 119
4.5.
Podsumowanie ............................................................................................................................ 122
Cz II. Tworzenie wasnych obiektów
123
5.
Tworzenie klas
125
5.1.
Tworzenie wasnej klasy ............................................................................................................ 126
5.1.1. Dodanie nowej klasy do projektu ..................................................................................... 126
5.2.
Deklaracja interfejsu klasy ....................................................................................................... 127
5.2.1. Zmienne egzemplarza ....................................................................................................... 129
5.2.2. Deklarowanie metod ......................................................................................................... 130
5.2.3. Przygotowanie pliku nagówkowego dla klasy CTRentalProperty ................................. 133
5.3.
Utworzenie implementacji klasy .............................................................................................. 135
5.3.1. Zdefiniowanie implementacji metody ............................................................................. 135
5.3.2. Uzyskanie dostpu do zmiennych egzemplarza .............................................................. 135
5.3.3. Wysyanie wiadomoci do self .......................................................................................... 136
5.3.4. Uzupenienie pliku metody klasy CTRentalProperty ..................................................... 137
5.4.
Zdefiniowane waciwoci ......................................................................................................... 138
5.4.1. Skadnia @property .......................................................................................................... 138
5.4.2. Automatyczne wygenerowanie metod typu getter i setter ............................................. 141
5.4.3. Skadnia z uyciem kropki ................................................................................................ 143
5.5.
Tworzenie i usuwanie obiektów ............................................................................................... 144
5.5.1. Tworzenie i inicjalizacja obiektów ................................................................................... 145
5.5.2. Metoda init nie jest najsprytniejsza ................................................................................. 146
5.5.3. Poczenie alokacji i inicjalizacji ...................................................................................... 148
5.5.4. Usuwanie obiektów ........................................................................................................... 149
5.6.
Uywanie klasy w aplikacji Rental Manager .......................................................................... 150
5.7.
Podsumowanie ............................................................................................................................ 153
6.
Rozszerzanie klas
155
6.1.
Tworzenie podklas ..................................................................................................................... 156
6.1.1. Dlaczego tworzymy podklasy? ......................................................................................... 156
6.2.
Dodawanie nowych zmiennych egzemplarza ......................................................................... 158
6
Spis treci
6.3.
Uzyskiwanie dostpu do istniejcych zmiennych egzemplarza ............................................ 161
6.3.1. Podejcie polegajce na rcznym utworzeniu metod typu getter i setter ..................... 162
6.4.
Nadpisywanie metod .................................................................................................................. 163
6.4.1. Nadpisywanie metody description ................................................................................... 164
6.5.
Klastry klas ................................................................................................................................. 166
6.5.1. Dlaczego stosowane s klastry klas? ................................................................................ 167
6.5.2. Wiele klastrów publicznych ............................................................................................. 167
6.6.
Kategorie ..................................................................................................................................... 168
6.6.1. Rozszerzenie klasy bez uycia podklasy .......................................................................... 168
6.6.2. Uywanie kategorii ............................................................................................................ 169
6.6.3. Rozwaania dotyczce uywania kategorii ...................................................................... 170
6.7.
Zastosowanie podklas w aplikacji Rental Manager ................................................................ 171
6.7.1. Utworzenie klasy CTLease i jej podklas .......................................................................... 172
6.7.2. Utworzenie podklasy CTPeriodicLease jako podklasy CTLease ................................... 173
6.7.3. Utworzenie podklasy CTFixedLease jako podklasy CTLease ....................................... 174
6.8.
Podsumowanie ............................................................................................................................ 176
7.
Protokoy
177
7.1.
Definiowanie protokou ............................................................................................................. 179
7.2.
Implementacja protokou .......................................................................................................... 180
7.2.1. Tworzenie funkcji wywoywania metod protokou ......................................................... 180
7.2.2. Zapewnienie klasie zgodnoci z protokoem ................................................................... 182
7.3.
Wane protokoy ........................................................................................................................ 185
7.3.1. Protokó UITableViewDataSource .................................................................................. 185
7.3.2. Protokó UITableViewDelegate ....................................................................................... 188
7.3.3. Protokó UIActionSheetDelegate .................................................................................... 192
7.3.4. Protokó NSXMLParser .................................................................................................... 193
7.4.
Podsumowanie ............................................................................................................................ 198
8.
Dynamiczne okrelanie typu i ustalanie typu w trakcie dziaania aplikacji
199
8.1.
Typy statyczne kontra dynamiczne .......................................................................................... 200
8.1.1. Przyjmowanie zaoe dotyczcych typu ustalanego w trakcie dziaania aplikacji ....... 201
8.2.
czenie dynamiczne ................................................................................................................ 202
8.3.
Jak dziaaj wiadomoci? ........................................................................................................... 203
8.3.1. Metody, selektory i implementacje .................................................................................. 204
8.3.2. Obsuga nieznanych selektorów ....................................................................................... 205
8.3.3. Wysyanie wiadomoci do nil ........................................................................................... 207
8.4.
Informacje o typie dostarczane w trakcie dziaania aplikacji ............................................... 208
8.4.1. Ustalenie, czy wiadomo odpowie na wiadomo ......................................................... 208
8.4.2. Wysyanie wiadomoci wygenerowanej w trakcie dziaania aplikacji ........................... 208
8.4.3. Dodawanie nowych metod do klasy podczas dziaania aplikacji .................................... 210
8.5.
Praktyczne wykorzystanie introspekcji typu podczas dziaania aplikacji ........................... 212
8.6.
Podsumowanie ............................................................................................................................ 213
9.
Zarzdzanie pamici
215
9.1.
Wasno obiektu ....................................................................................................................... 216
9.2.
Licznik uycia obiektu ............................................................................................................... 218
9.2.1. Zwolnienie obiektu ........................................................................................................... 219
9.2.2. Przytrzymanie obiektu ...................................................................................................... 220
9.2.3. Okrelenie biecej wartoci licznika uycia ................................................................... 221
Zgłoś jeśli naruszono regulamin