Facebook - konwersja
  • promocja
Wydawnictwo:
Data wydania:
26 czerwca 2012
Format ebooka:
MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.

Objective-C. Podstawy - ebook

Wejdź pewnym krokiem w świat programowania Apple!

Jeszcze parę lat temu nie do pomyślenia było, że aplikacje na urządzenia mobilne mogą stanowić tak intratny interes. Jednak urządzenia te podbiły rynek w mgnieniu oka i dziś trudno wyobrazić sobie życie bez nich. Co więcej, dały one jeszcze większe możliwości działania różnym projektantom - praktycznie wszystkie wyposażone są w aparat fotograficzny, odbiornik GPS oraz czujniki położenia. To peryferia, o których programiści tworzący aplikacje na standardowe komputery mogą tylko pomarzyć. Zastanawiasz się, jak wykorzystać ten potencjał?

Ta książka dostarczy Ci odpowiedzi. W trakcie lektury nauczysz się tworzyć atrakcyjne aplikacje na platformę iOS. Jest ona wykorzystywana w urządzeniach firmy Apple, których nikomu nie trzeba przedstawiać. Podczas tworzenia aplikacji dla tej platformy będziesz korzystał z języka Objective-C oraz środowiska XCode 4. Zawarta tu wiedza i liczne przykłady krok-po-kroku pozwolą Ci błyskawicznie opanować trudniejsze partie materiału. Książka ta jest idealną pozycją dla wszystkich programistów chcących rozpocząć przygodę z platformą iOS.

Sprawdź:

  • jak przygotować środowisko pracy XCode
  • jaka jest składnia języka Objective-C
  • jak uruchomić swoją pierwszą aplikację

Twój przewodnik do pierwszej aplikacji na system iOS!


Christopher Fairbairn, Johannes Fahrenkrug i Collin Ruffenach są profesjonalnymi twórcami oprogramowania działającego na platformach mobilnych. Każdy z nich ma więcej niż dziesięcioletnie doświadczenie w używaniu różnych systemów, takich jak iOS, Palm, Windows Mobile i Java.

Spis treści

Wstęp (11)

Podziękowania (13)

O książce (15)

Forum Author Online (19)

Informacje na temat ilustracji umieszczonej na okładce (20)

Część I. Rozpoczęcie pracy z Objective-C (21)

1. Twoja pierwsza aplikacja iOS (23)

  • 1.1. Wprowadzenie do narzędzi programistycznych na platformę iOS (24)
    • 1.1.1. Dostosowanie struktur Cocoa do potrzeb urządzeń mobilnych (25)
  • 1.2. Dostosowanie swoich oczekiwań (26)
    • 1.2.1. Specyfikacja sprzętowa na koniec 2011 roku (26)
    • 1.2.2. Spodziewaj się zawodnego połączenia 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ódłowego (33)
  • 1.4. Przygotowanie interfejsu użytkownika (37)
    • 1.4.1. Dodanie kontrolek do widoku (38)
    • 1.4.2. Połączenie kontrolek z kodem źródłowym (39)
  • 1.5. Kompilacja gry (43)
  • 1.6. Uruchomienie gry (44)
    • 1.6.1. Wybór urządzenia docelowego (44)
    • 1.6.2. Używanie punktów kontrolnych do śledzenia stanu działającej aplikacji (45)
    • 1.6.3. Uruchomienie gry Coin Toss w symulatorze (46)
    • 1.6.4. Używanie modułu usuwania błędów (47)
  • 1.7. Podsumowanie (49)

2. Typy danych, zmienne i stałe (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 całkowite (56)
    • 2.2.2. Liczby zmiennoprzecinkowe (59)
    • 2.2.3. Znaki i ciągi tekstowe (61)
    • 2.2.4. Wartości boolowskie (63)
  • 2.3. Wyświetlanie i konwersja wartości (65)
    • 2.3.1. Funkcja NSLog() i specyfikatory formatu (65)
    • 2.3.2. Rzutowanie typów i konwersja typów (67)
  • 2.4. Tworzenie własnych 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. Ukończenie 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 złego jest w języku 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. Brakujący typ danych - id (84)
  • 3.3. Wskaźniki i różnice pomiędzy odniesieniem i wartością typu (85)
    • 3.3.1. Mapowanie pamięci (86)
    • 3.3.2. Pobieranie adresu zmiennej (86)
    • 3.3.3. Podążanie za wskaźnikiem (87)
    • 3.3.4. Porównywanie wartości wskaźników (88)
  • 3.4. Komunikacja z obiektami (89)
    • 3.4.1. Wysyłanie wiadomości obiektowi (89)
    • 3.4.2. Wysyłanie wiadomości klasie (90)
    • 3.4.3. Wysyłanie nieistniejących wiadomości (90)
    • 3.4.4. Wysłanie wiadomości do nil (92)
  • 3.5. Ciągi tekstowe (93)
    • 3.5.1. Tworzenie ciągu tekstowego (93)
    • 3.5.2. Wyodrębnianie znaków z ciągu tekstowego (94)
    • 3.5.3. Modyfikacja ciągu tekstowego (95)
    • 3.5.4. Porównywanie ciągów tekstowych (96)
  • 3.6. Przykładowa aplikacja (97)
  • 3.7. Podsumowanie (100)

4. Przechowywanie danych w kolekcjach (101)

  • 4.1. Tablice (102)
    • 4.1.1. Budowa tablicy (102)
    • 4.1.2. Uzyskanie dostępu 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. Słowniki (110)
    • 4.2.1. Tworzenie słownika (110)
    • 4.2.2. Uzyskanie dostępu do par przechowywanych w słowniku (112)
    • 4.2.3. Dodawanie par klucz-wartość (113)
    • 4.2.4. Wyświetlenie wszystkich kluczy i wartości (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 używać danych (119)
  • 4.5. Podsumowanie (122)

Część II. Tworzenie własnych obiektów (123)

5. Tworzenie klas (125)

  • 5.1. Tworzenie własnej 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 dostępu do zmiennych egzemplarza (135)
    • 5.3.3. Wysyłanie wiadomości do self (136)
    • 5.3.4. Uzupełnienie pliku metody klasy CTRentalProperty (137)
  • 5.4. Zdefiniowane właściwości (138)
    • 5.4.1. Składnia @property (138)
    • 5.4.2. Automatyczne wygenerowanie metod typu getter i setter (141)
    • 5.4.3. Składnia z użyciem 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. Połączenie alokacji i inicjalizacji (148)
    • 5.5.4. Usuwanie obiektów (149)
  • 5.6. Używanie 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.3. Uzyskiwanie dostępu do istniejących zmiennych egzemplarza (161)
    • 6.3.1. Podejście polegające na ręcznym 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 użycia podklasy (168)
    • 6.6.2. Używanie kategorii (169)
    • 6.6.3. Rozważania dotyczące używania 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. Protokoły (177)

  • 7.1. Definiowanie protokołu (179)
  • 7.2. Implementacja protokołu (180)
    • 7.2.1. Tworzenie funkcji wywoływania metod protokołu (180)
    • 7.2.2. Zapewnienie klasie zgodności z protokołem (182)
  • 7.3. Ważne protokoły (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 określanie typu i ustalanie typu w trakcie działania aplikacji (199)

  • 8.1. Typy statyczne kontra dynamiczne (200)
    • 8.1.1. Przyjmowanie założeń dotyczących typu ustalanego w trakcie działania aplikacji (201)
  • 8.2. Łączenie dynamiczne (202)
  • 8.3. Jak działają wiadomości? (203)
    • 8.3.1. Metody, selektory i implementacje (204)
    • 8.3.2. Obsługa nieznanych selektorów (205)
    • 8.3.3. Wysyłanie wiadomości do nil (207)
  • 8.4. Informacje o typie dostarczane w trakcie działania aplikacji (208)
    • 8.4.1. Ustalenie, czy wiadomość odpowie na wiadomość (208)
    • 8.4.2. Wysyłanie wiadomości wygenerowanej w trakcie działania aplikacji (208)
    • 8.4.3. Dodawanie nowych metod do klasy podczas działania aplikacji (210)
  • 8.5. Praktyczne wykorzystanie introspekcji typu podczas działania aplikacji (212)
  • 8.6. Podsumowanie (213)

9. Zarządzanie pamięcią (215)

  • 9.1. Własność obiektu (216)
  • 9.2. Licznik użycia obiektu (218)
    • 9.2.1. Zwolnienie obiektu (219)
    • 9.2.2. Przytrzymanie obiektu (220)
    • 9.2.3. Określenie bieżącej wartości licznika użycia (221)
  • 9.3. Pule autorelease (223)
    • 9.3.1. Czym jest pula autorelease? (224)
    • 9.3.2. Dodawanie obiektów do puli autorelease (224)
    • 9.3.3. Utworzenie nowej puli autorelease (224)
    • 9.3.4. Usuwanie obiektów z puli (226)
    • 9.3.5. Dlaczego puli autorelease nie można wykorzystywać w każdej sytuacji? (226)
  • 9.4. Strefy pamięci (229)
  • 9.5. Reguły własności (231)
  • 9.6. Ostrzeżenie o małej ilości dostępnej pamięci (232)
    • 9.6.1. Implementacja protokołu UIApplicationDelegate (233)
    • 9.6.2. Nadpisanie metody didReceiveMemoryWarning (234)
    • 9.6.3. Obserwacja powiadomienia UIApplicationDidReceiveMemoryWarningNotification (237)
  • 9.7. Podsumowanie (239)

Część III. Maksymalne wykorzystanie funkcji struktur (241)

10. Obsługa błędów i wyjątków (243)

  • 10.1. NSError - obsługa błędów w sposób zgodny z Cocoa (244)
    • 10.1.1. Komunikacja z NSError (245)
    • 10.1.2. Analiza słownika userInfo klasy NSError (245)
  • 10.2. Tworzenie obiektu NSError (247)
    • 10.2.1. Wprowadzenie RentalManagerAPI (247)
    • 10.2.2. Obsługa i wyświetlanie błędów w aplikacji RentalManagerAPI (250)
  • 10.3. Wyjątki (251)
    • 10.3.1. Zgłaszanie wyjątku (251)
    • 10.3.2. Przechwytywanie wyjątku (252)
  • 10.4. Podsumowanie (253)

11. Key-Value Coding i NSPredicate (255)

  • 11.1. Zapewnienie obiektom zgodności z KVC (257)
    • 11.1.1. Uzyskanie dostępu do właściwości za pomocą KVC (258)
    • 11.1.2. Tworzenie ścieżek kluczy (258)
    • 11.1.3. Zwracanie wielu wartości (259)
    • 11.1.4. Agregacja i zbieranie wartości (259)
  • 11.2. Obsługa przypadków specjalnych (261)
    • 11.2.1. Obsługa nieznanych kluczy (261)
    • 11.2.2. Obsługa wartości nil (262)
  • 11.3. Filtrowanie i dopasowywanie za pomocą predykatów (263)
    • 11.3.1. Obliczenie predykatu (263)
    • 11.3.2. Filtrowanie kolekcji (264)
    • 11.3.3. Wyrażenie warunku predykatu (264)
    • 11.3.4. Bardziej skomplikowane wyrażenia (265)
    • 11.3.5. Używanie ścieżek kluczy w wyrażeniu predykatu (266)
    • 11.3.6. Parametryzowanie i stosowanie szablonu wyrażenia predykatu (267)
  • 11.4. Przykładowa aplikacja (268)
  • 11.5. Podsumowanie (271)

12. Odczyt i zapis danych aplikacji (273)

  • 12.1. Historia Core Data (275)
    • 12.1.1. Do czego służy Core Data? (275)
  • 12.2. Obiekty Core Data (276)
    • 12.2.1. Kontekst obiektów zarządzanych (277)
    • 12.2.2. Koordynator trwałego magazynu danych (277)
    • 12.2.3. Model obiektu zarządzanego (277)
    • 12.2.4. Magazyn trwałych obiektów (278)
  • 12.3. Zasoby Core Data (278)
    • 12.3.1. Encje Core Data (278)
    • 12.3.2. Atrybuty Core Data (279)
    • 12.3.3. Związki w Core Data (280)
  • 12.4. Utworzenie aplikacji PocketTasks (281)
    • 12.4.1. Analiza szablonu Xcode z obsługą Core Data (281)
    • 12.4.2. Budowa modelu danych (281)
    • 12.4.3. Definicje związków (282)
    • 12.4.4. Tworzenie encji Person (284)
    • 12.4.5. Pobieranie encji Person (286)
    • 12.4.6. Dodanie TableView (287)
    • 12.4.7. Dodawanie i usuwanie osób (290)
    • 12.4.8. Zarządzanie zadaniami (294)
    • 12.4.9. Używanie obiektów modelu (297)
  • 12.5. Wykraczając poza podstawy (299)
    • 12.5.1. Zmiana modelu danych (299)
    • 12.5.2. Wydajność (301)
    • 12.5.3. Obsługa błędów i weryfikacja (302)
  • 12.6. Podsumowanie (304)

13. Bloki i technologia Grand Central Dispatch (305)

  • 13.1. Składnia bloków (306)
    • 13.1.1. Blok stanowi zamkniętą całość (309)
    • 13.1.2. Bloki i zarządzanie pamięcią (310)
    • 13.1.3. API bazujące na blokach w strukturach iOS dostarczanych przez Apple (313)
  • 13.2. Asynchroniczne wykonywanie zadań (314)
    • 13.2.1. Poznaj technologię GCD (315)
    • 13.2.2. Podstawy technologii GCD (315)
    • 13.2.3. Budowa aplikacji RealEstateViewer (316)
    • 13.2.4. Asynchroniczne przeprowadzanie wyszukiwania obrazów (321)
    • 13.2.5. Asynchroniczne wczytywanie obrazów (322)
  • 13.3. Podsumowanie (324)

14. Techniki usuwania błędów (325)

  • 14.1. Utworzenie aplikacji zawierającej błędy (326)
  • 14.2. Zrozumienie funkcji NSLog() (327)
  • 14.3. Kontrola wycieków pamięci za pomocą narzędzia Instruments (331)
  • 14.4. Wykrywanie zombie (333)
  • 14.5. Podsumowanie (336)

Dodatki (337)

A: Instalacja iOS SDK (339)

  • A.1. Instalacja iOS SDK (340)
  • A.2. Przygotowanie urządzenia iOS (341)

B: Podstawy języka C (345)

  • B.1. Konwencje nazw zmiennych (346)
  • B.2. Wyrażenia (349)
  • B.3. Polecenia warunkowe (353)
  • B.4. Polecenia pętli (358)
  • B.5. Podsumowanie (364)

C: Alternatywy dla Objective-C (365)

  • C.1. Krótka historia Objective-C (366)
  • C.2. Alternatywy dla Objective-C i Cocoa (368)
  • C.3. iPhone SDK - Safari (369)
  • C.4. Języki skryptowe - Lua i Ruby (374)
  • C.5. Waga ciężka - Adobe Flash (376)
  • C.6. Mono (.NET) (378)
  • C.7. Podsumowanie (380)

Skorowidz (381)

Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-246-5250-1
Rozmiar pliku: 5,5 MB

BESTSELLERY

Kategorie: