Wprowadzenie do Objective-C
Historia rozszerzenie składni C o elementy obiektowe powstał na początku lat 80-tych zainspirowany SmallTalk iem wstecznie kompatybilny z C
Historia Steve Jobs po odejściu z Apple założył firmę Next Next wykupił licencję na Objective-C, który został językiem programowania systemu NextStep Next został wykupiony przez Apple, a NextStep stał się podstawą Mac OS X
Objective-C składnia nieobiektowa zgodna z C składnia obiektowa pochodząca ze SmallTalk Przesyłanie komunikatów, a nie wywoływanie metod Obsługa wyjątków
Objective-C dziedziczenie tylko pojedyncze zamiast interfejsów protokoły kategorie - podobne jak metody rozszerzające w.net zarządzanie pamięcią: zliczanie referencji
Objective-C słowa kluczowe zaczynają się od @ programując dla ios i Mac OS wszystkie klasy dziedziczą po NSObject podobnie jak w C: pliki nagłówkowe *.h pliki implementacyjne *.m sugerowana notacja wielbłądzia (camel) settablecellvalue
Plik nagłówkowy Atrybuty/pola Operacje/metody Kolejność zawsze taka sama
Plik implementacyjny Wszystkie metody z pliku nagłówkowego są publiczne - przed metodą oznacza, że jest to metoda instancji klasy + oznacza metodę klasy (metoda statyczna) metody prywatne można dopisać w pliku.m
Metoda w nawiasach na początku typ metody, np. (void) nazwa metody argumenty oddzielone : i oznaczone etykietami oraz typem, np.: argument z etykietą description typu wskaźnik na NSString
Metoda metoda tableview typu wskaźnik na UITableViewCell 2 argumenty: typu wskaźnik na UITableView o etykiecie cellforrowatindexpath typu wskaźnik na NSIndexPath o etykiecie indexpath
Przesłanie komunikatu czyli wywołanie metody [adresat komunikat] adresatem może być obiekt lub klasa z argumentem i kilkoma
Własności ważną rolę odgrywają własności (properties) ukryte metody setter i getter w przykładzie równowążne metodom code do pobrania danych i setcode do podstawienia składnia kropkowa
Selektory wskaźniki do metod umożliwia dynamiczne wywoływanie metod
Dziedziczenie tylko pojedyncze klasa może implementować wiele protokołów wszystkie metody są wirtualne
Zarządzanie pamięcią nie ma Garbage collection (jest w Mac OS X) można wykorzystać ARC (od ios 5) [[object alloc] init]; //konstruktor
Typy szablonów aplikacji Master-Detail Application Page-Based Application Single View Application Tabbed Application Game
Okno i widok Aplikacja jest tworzona za pomocą delegacji Każda aplikacja ma tylko jedno okno (Window) Elementy na ekranie umieszczone są w widokach (View), może ich być wiele Niektóre widoki mogą się obracać
Hello World 2009 Tworzymy nowy projekt w Xcode Window-Based Application
Kod aplikacji
Deklaracja Kod delegacji
Implementacja Kod delegacji
Efekt
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności z C
Podobieństwa do Objective-C typy podstawowe operatory użycie nawiasów klamrowych {} użycie nawiasów kwadratowych [] (tablice) operator przypisania =, porównania == podobne instrukcje (pętle, warunkowe) dziedziczenie metod klas i instancji słowo kluczowe self
Różnice vs Objective-C nie trzeba używać ; brak plików nagłówkowych silne typowanie przeciążanie operatorów nowy operator === porównujący obiekty pełne wsparcie Unicode w string brak obsługi wyjątków inferencja typów programowanie generyczne typy funkcyjne
Różnice vs Objective-C domyślnie nie ma wskaźników przypisanie nie zwraca wartości brak konieczności używania break w instrukcji switch (instrukcja fallthrough) zmienne i stałe są zawsze inicjalizowane przepełnienie zakresu jest wykrywane, chyba, że użyjemy specjalnych operatorów, np. &+, &-
Playground xcode 6 zawiera moduł Playground służy on do sprawdzania na żywo jak działa kod Swift
Playground Można na różne sposoby wizualizować działanie kodu
Playground Można korzystać z większości API, np. UIKit
Zmienne i stałe Słowa kluczowe let i var let definiuje stałą var definiuje zmienną podstawienie wartości określa typ zmiennej/stałej dzięki inferencji typów
Zmienne i stałe Nazwy zmiennych mogą zawierać dowolne znaki Unicode oprócz: spacji symboli matematycznych linii i prostokątów Nie mogą się zaczynać od cyfry
Typy podstawowe Int8 UInt8 Int (Int32, Int64) UInt (UInt32, UInt64) Double (64 bity - 15 cyfr) Float (32 bity - 6 cyfr) String Bool (true lub false)
Typy podstawowe Dla których ma to sens mają własności max i min Można stosować aliasy nazw typów
Operatory Podstawowe operatory: +,-,*,/,% (modulo) Operatory złożone: +=, -=, *=, /=, %=, &&, Operatory inkrementacyjne: ++, Operatory porównania: ==, >, <, >=, <=,!= Operatory zakresu: x..y, x..<y Operatory bitowe: &,, ^, <<, >>, &=, =, ^=, <<=, >>=
Operatory typów Operator is sprawdza, czy obiekt jest danego typu i ma wartość boolowską Operator as? rzutuje obiekt na typ opcjonalny, a gdy jest to niemożliwe podstawia nil Operator as! wymusza rzutowanie na typ, a jeżeli jest niemożliwe to występuje błąd wykonania Operator as można stosować przy rzutowaniu w górę
Zmienne i stałe wartości nigdy nie są domyślnie konwertowane do innych typów - trzeba stworzyć nową wartość wartości w stringach można osadzać łatwiej typy opcjonalne (nullowe) - dodajemy? wtedy zmienna może mieć wartość nil
Tablice i słowniki Deklaruje się je za pomocą nawiasów kwadratowych Dostęp do elementów też przez nawiasy Słowniki klucz:wartość Aby utworzyć puste korzystamy ze składni konstruktorów
Krotki Wartości można grupować w krotki (tuples) Krotka może zawierać dowolną kombinację typów Krotkę można zdekomponować na składowe
Krotki niepotrzebne wartości można zastąpić podkreśleniem do składowych można się odwołać przez indeks
Krotki składowe mogą mieć swoje etykiety
Instrukcje instrukcje warunkowe if i switch warunek musi być zawsze boolowski pętle for-in, for, while, do-while
Instrukcja warunkowa Jeżeli chcemy sprawdzić, czy zmienna ma wartość w instrukcji warunkowej można wykorzystać operator let
Instrukcja switch Nie jest ograniczona do typów prostych Nie jest ograniczona do równości Musi być wyczerpująca - klauzula default
Instrukcja switch W przeciwieństwie do innych języków Swift automatycznie kończy switch po znalezieniu pasującego przypadku Można użyć break, gdy tego potrzeba Można to zmienić instrukcją fallthrough
Instrukcja for-in Umożliwia iterowanie po tablicach i słownikach
Pętle while, do-while for..<
Pętle przerwanie pętli - break zakończenie bieżącego przebiegu - continue
Funkcje Do deklaracji funkcji służy słowo kluczowe func Argumenty oddzielone przecinkami, poprzedzone etykietami i dwukropkiem Typ funkcji po argumentach oddzielony ->
Funkcje Argumenty funkcji mogą mieć etykiety Trzeba z nich wtedy korzystać w trakcie wywołania Argumenty mogą mieć wartości domyślne
Funkcje Funkcja może mieć wiele wartości, identyfikowanych przez etykiety lub indeks
Funkcje Liczba argumentów funkcji może być zmienna pod warunkiem, że są tego samego typu