E-book details

iOS 12. Wprowadzenie do programowania w Swifcie. Wydanie V

iOS 12. Wprowadzenie do programowania w Swifcie. Wydanie V

Matt Neuburg

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!


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

  • Title: iOS 12. Wprowadzenie do programowania w Swifcie. Wydanie V
  • Author: Matt Neuburg
  • Original title: iOS 12 Programming Fundamentals with Swift
  • Translation: Robert Górczyński
  • ISBN: 978-83-283-5258-2, 9788328352582
  • Date of issue: 2019-08-20
  • Format: Ebook
  • Item ID: ios12s
  • Publisher: Helion