iOS 12. Wprowadzenie do programowania w Swifcie. Wydanie V - ebook
iOS 12. Wprowadzenie do programowania w Swifcie. Wydanie V - ebook
Podstawy Swifta, Xcode i Cocoa
Język Swift poznaliśmy w 2014 roku. Został on opracowany przez Apple specjalnie dla platormy iOS z uwzględnieniem takich założeń, jak przejrzystość, bezpieczeństwo, prostota, łatwość stosowania, zorientowanie obiektowe. Kod w tym języku sam zarządza pamięcią i zapewnia ścisłą kontrolę typów. Swift od początku wzbudził ogromne zainteresowanie programistów, którzy prędko docenili jego zalety. Dziś jest uważany za łatwe do opanowania i bardzo wygodne narzędzie dla profesjonalistów, zwłaszcza że od pewnego czasu Apple dostarcza wraz z Swiftem aplikację Xcode oraz framework Cocoa. To wszystko sprawiło, że Swift stał się bardzo atrakcyjną alternatywą dla Objective-C.
Ta książka zawiera bardzo solidne wprowadzenie do tworzenia aplikacji na platformie iOS. Znalazły się tu systematycznie przedstawione informacje na temat Swifta, Xcode i frameworka Cocoa. Podstawy języka wyjaśniono w najużyteczniejszej kolejności, koncentrując się na najczęściej stosowanych i najpraktyczniejszych aspektach Swifta. Sporo miejsca poświęcono środowisku Xcode, w którym odbywa się programowanie na platformie iOS. Omówiono, czym jest projekt, jak zmienić go na aplikację, jak tworzyć, uruchamiać i debugować kod źródłowy, a także jak zgłosić aplikację do sklepu App Store. Bardzo ważną częścią książki jest wprowadzenie do Cocoa Touch, który zapewnia najważniejsze klasy podstawowe, kategorie, protokoły, mechanizmy delegowania i powiadamiania, a także zarządzanie pamięcią.
W tej książce między innymi:
- solidne podstawy koncepcji Swifta
- najnowsze funkcje dostępne podczas programowania na iOS
- cykl życiowy projektu Xcode
- komunikacja między Swiftem a Objective-C
- programowanie techniką klucz-wartość
Swift. Doskonałe narzędzie - znakomite efekty!
Spis treści
Wprowadzenie 13
CZĘŚĆ I. JĘZYK
1. Architektura Swifta 23
- Zaczynamy 23
- Czy wszystko jest obiektem? 24
- Trzy odmiany obiektu typu 25
- Zmienna 26
- Funkcja 27
- Struktura pliku Swifta 28
- Zasięg i cykl życiowy 31
- Elementy składowe obiektu 32
- Przestrzeń nazw 32
- Moduł 33
- Egzemplarz 34
- Dlaczego egzemplarz? 36
- Słowo kluczowe self 38
- Prywatność 39
- Projekt 41
- Obiekt typu i API 42
- Tworzenie, zasięg i cykl życiowy egzemplarzy 44
- Podsumowanie 44
2. Funkcje 47
- Parametry funkcji i jej wartość zwrotna 47
- Typ wartości zwrotnej i typ parametrów 50
- Sygnatura funkcji 51
- Zewnętrzne nazwy parametrów 52
- Przeciążanie 53
- Wartość domyślna parametru 54
- Parametr wariadyczny 55
- Parametr ignorowany 55
- Parametr modyfikowalny 56
- Funkcja w funkcji 59
- Rekurencja 61
- Funkcja jako wartość 61
- Funkcja anonimowa 64
- Technika zdefiniuj i wywołaj 69
- Domknięcie 70
- Jak domknięcie pomaga usprawnić kod? 72
- Funkcja zwracająca funkcję 73
- Domknięcie przypisujące wartość przechwyconej zmiennej 75
- Domknięcie zachowujące przechwycone środowisko 76
- Dekorator @escaping 77
- Rozwijanie funkcji 78
- Selektory i odwołania funkcji 79
- Zasięg odwołania funkcji 81
- Selektor 82
3. Zmienne i typy proste 85
- Cykl życiowy i zasięg zmiennej 85
- Deklaracja zmiennej 87
- Obliczana wartość początkowa 90
- Zmienna obliczana 91
- Obserwator funkcji setter 94
- Inicjalizacja opóźniona 96
- Wbudowane typy proste 98
- Bool 98
- Liczby 100
- Ciąg tekstowy 107
- Znak i indeks ciągu tekstowego 111
- Zakres 116
- Krotka 118
- Typ opcjonalny 120
4. Obiekt typu 133
- Funkcje i deklaracje obiektu typu 133
- Metoda inicjalizacyjna 135
- Właściwość 141
- Metoda 144
- Indeks 146
- Obiekt typu zagnieżdżonego 148
- Odwołanie do egzemplarza 148
- Wyliczenie 150
- Czysta wartość 151
- Wartość powiązana 153
- Iteracja przez bloki case typu wyliczeniowego 155
- Metoda inicjalizacyjna typu wyliczeniowego 155
- Właściwości typu wyliczeniowego 157
- Metody typu wyliczeniowego 157
- Dlaczego typ wyliczeniowy? 158
- Struktura 159
- Metoda inicjalizacyjna struktury oraz właściwości i metody 160
- Struktura jako przestrzeń nazw 161
- Klasa 162
- Typ przekazywany przez wartość i referencję 162
- Podklasa i superklasa 168
- Metoda inicjalizacyjna klasy 173
- Metoda dealokująca klasy 181
- Metody i właściwości klasy 182
- Polimorfizm 184
- Rzutowanie 187
- Rzutowanie w dół 187
- Sprawdzanie typu i bezpieczne rzutowanie w dół 188
- Sprawdzanie typu i rzutowanie wartości typu opcjonalnego 189
- Połączenie z Objective-C 190
- Odwołanie do typu 191
- Od egzemplarza do typu 191
- Typ jako wartość 192
- Słowo kluczowe Self 194
- Porównywanie typów 196
- Podsumowanie terminologii związanej z typami 196
- Protokół 197
- Dlaczego protokół? 198
- Rzutowanie i sprawdzanie typu protokołu 200
- Deklarowanie protokołu 201
- Łączenie protokołów 202
- Opcjonalne elementy składowe protokołu 203
- Klasa protokołu 204
- Niejawnie wymagana metoda inicjalizacyjna 205
- Łatwe do adaptacji literały 207
- Generyki 208
- Deklaracje generyka 210
- Sprzeczna specjalizacja 212
- Ograniczenia typu 213
- Jawna specjalizacja 215
- Inwariancja generyka 217
- Łańcuch typów powiązanych 218
- Klauzula where 220
- Rozszerzenie 223
- Rozszerzanie obiektu typu 223
- Rozszerzanie protokołu 225
- Rozszerzanie generyka 227
- Typ parasola 228
- Any 229
- AnyObject 230
- AnyClass 233
- Typy kolekcji 233
- Tablica 233
- Słownik 249
- Zbiór 255
5. Sterowanie przepływem sposobu działania programu i nie tylko 261
- Sterowanie przepływem sposobu działania programu 261
- Odgałęzienie 262
- Pętla 273
- Przejście do innego fragmentu kodu 278
- Prywatność 292
- Poziomy prywatności private i fileprivate 293
- Poziomy prywatności public i open 295
- Reguły prywatności 295
- Introspekcja 296
- Operatory 297
- Implementacje protokołu syntezowanego 300
- Ścieżki kluczy 303
- Dynamiczne wyszukiwanie elementów składowych 305
- Zarządzanie pamięcią 306
- Zarządzanie pamięcią typu przekazywanego przez referencję 306
- Dostęp na wyłączność do typu przekazywanego przez wartość 312
CZĘŚĆ II. ŚRODOWISKO IDE
6. Anatomia projektu Xcode 317
- Nowy projekt 317
- Okno projektu 319
- Panel nawigatora 320
- Panel narzędziowy 325
- Edytor 327
- Pliki projektu i ich zależności 329
- Co się znajduje w katalogu projektu? 329
- Grupy 330
- Cel 331
- Opcje Build Phases 332
- Opcje Build Settings 333
- Konfiguracje 334
- Schemat 336
- Od projektu do skompilowanej aplikacji 339
- Ustawienia kompilacji 341
- Ustawienia property list 341
- Plik nib 342
- Zasoby dodatkowe 343
- Pliki kodu źródłowego 346
- Frameworki i SDK 346
- Proces uruchamiania aplikacji 348
- Punkt wejścia aplikacji 348
- Funkcja UIApplicationMain() 349
- Aplikacja bez pliku storyboard 351
- Zmiana nazw elementów projektu 352
7. Zarządzanie plikami nib 355
- Edytor interfejsu nib 356
- Lista Document Outline 357
- Płótno 360
- Karty inspektorów i bibliotek 362
- Wczytywanie pliku nib 363
- Kiedy jest wczytywany plik nib? 364
- Ręczne wczytywanie pliku nib 365
- Połączenie 367
- Outlet 367
- Właściciel pliku nib 368
- Automatycznie konfigurowany plik nib 372
- Błędna konfiguracja outletu 373
- Usunięcie outletu 374
- Więcej sposobów na utworzenie outletów 375
- Kolekcja outletu 378
- Akcja połączenia 378
- Więcej sposobów na utworzenie akcji 380
- Błędnie skonfigurowana akcja 382
- Połączenia między plikami nib 382
- Konfiguracja dodatkowa na podstawie egzemplarzy pochodzących z pliku nib 383
8. Dokumentacja 387
- Okno dokumentacji 387
- Strona dokumentacji klasy 388
- Dokumentacja Quick Help 392
- Deklaracja symbolu 393
- Plik nagłówkowy 395
- Przykładowy kod źródłowy 395
- Zasoby w internecie 396
9. Cykl życiowy projektu 397
- Zależności środowiskowe 397
- Dozwolone środowisko uruchomieniowe 398
- Zapewnienie wstecznej zgodności 398
- Typ urządzenia 400
- Argumenty i zmienne środowiskowe 401
- Kompilacja warunkowa 402
- Kontrola wersji 403
- Edytowanie kodu źródłowego i poruszanie się po nim 407
- Automatyczne uzupełnianie kodu 408
- Fragmenty kodu 410
- Funkcja Fix-it i sprawdzanie składni na bieżąco 411
- Nawigacja 412
- Wyszukiwanie 414
- Refaktoryzacja 415
- Uruchamianie w symulatorze 416
- Debugowanie 417
- Debugowanie techniką jaskiniowca 417
- Debugger Xcode 420
- Testowanie 426
- Test jednostkowy 428
- Testy interfejsu 430
- Czyszczenie 432
- Uruchamianie aplikacji w urządzeniu 433
- Uczestnictwo w płatnym programie dla programistów 433
- Podpisywanie aplikacji 434
- Podpisywanie automatyczne 435
- Podpisywanie ręczne 438
- Uruchomienie aplikacji 440
- Zarządzanie urządzeniami i certyfikatami programistycznymi 441
- Profilowanie 442
- Liczniki 442
- Usuwanie problemów związanych z pamięcią 442
- Aplikacja Instruments 444
- Lokalizacja 448
- Dystrybucja 452
- Utworzenie archiwum 452
- Certyfikat dystrybucyjny 453
- Profil dystrybucyjny 455
- Dystrybucja na potrzeby testów 455
- Przygotowywanie ostatecznej aplikacji 457
- Zrzuty ekranu i klip wideo 460
- Ustawienia property list 461
- Przekazanie aplikacji do sklepu App Store 462
CZĘŚĆ III. COCOA
10. Klasy Cocoa 467
- Podklasa 467
- Kategoria i rozszerzenie 470
- W jaki sposób Swift używa rozszerzeń? 470
- W jaki sposób programista używa rozszerzeń? 470
- W jaki sposób Cocoa używa kategorii? 471
- Protokół 472
- Protokół nieformalny 474
- Metoda opcjonalna 475
- Wybrane klasy frameworka Foundation 477
- NSRange i NSNotFound 478
- NSString i przyjaciele 480
- NSDate i przyjaciele 482
- NSNumber 484
- NSValue 486
- NSData 486
- NSMeasurement i przyjaciele 487
- Równość, wartość hash i porównywanie 488
- NSArray i NSMutableArray 490
- NSDictionary i NSMutableDictionary 492
- NSSet i przyjaciele 492
- NSIndexSet 493
- NSNull 494
- Niemodyfikowalne i modyfikowalne 494
- property list 495
- Protokół Codable 496
- Akcesory, właściwości i kodowanie klucz-wartość 499
- Akcesory Swifta 501
- Kodowanie klucz-wartość 502
- Używanie kodowania klucz-wartość 504
- KVC i outlet 505
- Ścieżka klucza w Cocoa 505
- Tajne życie obiektu NSObject 506
11. Zdarzenia Cocoa 509
- Powód istnienia zdarzeń 509
- Tworzenie podklasy 510
- Powiadomienie 511
- Otrzymywanie powiadomienia 512
- Wyrejestrowanie obserwatora 514
- Publikowanie powiadomienia 516
- Licznik czasu 517
- Delegowanie 518
- Mechanizm delegowania w Cocoa 519
- Implementowanie mechanizmu delegowania 520
- Źródło danych 522
- Akcja 523
- Łańcuch respondera 525
- Przekazanie odpowiedzialności 526
- Akcja skierowana do nil 527
- Obserwacja klucz-wartość 528
- Rejestracja i powiadamianie 529
- Wyrejestrowanie obserwatora 529
- Przykład obserwacji klucz-wartość 530
- Zalew zdarzeń 532
- Opóźnione wykonanie operacji 535
12. Zarządzanie pamięcią 537
- Zasady zarządzania pamięcią przez Cocoa 537
- Reguły zarządzania pamięcią w Cocoa 539
- Co to jest mechanizm ARC i na czym polega jego działanie? 540
- Jak Cocoa zarządza pamięcią obiektu? 540
- Automatycznie zwalniana pula 541
- Zarządzanie pamięcią właściwości egzemplarza 543
- Cykl przytrzymania i odwołanie słabe 544
- Nietypowe sytuacje związane z zarządzaniem pamięcią 546
- Obserwator powiadomień 546
- Obserwator KVO 547
- Licznik czasu 548
- Pozostałe nietypowe sytuacje 549
- Wczytywanie pliku nib i zarządzanie pamięcią 550
- Zarządzanie pamięcią obiektów CFTypeRef 551
- Polityka zarządzania pamięcią właściwości 552
- Debugowanie i błędy popełniane podczas zarządzania pamięcią 555
13. Komunikacja między obiektami 557
- Widoczność poprzez utworzenie egzemplarza 558
- Widoczność według związku 560
- Widoczność globalna 561
- Powiadomienia i obserwacja klucz-wartość 562
- Architektura MVC 563
DODATKI
A. Języki C, Objective-C i Swift 569
Skorowidz 601
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-5258-2 |
Rozmiar pliku: | 6,7 MB |