>> Tianyu LIU: Hej, jak to leci wszystkim?
I to jest iOS App programowanie obiektywnych c seminarium.
I mam na imię Tianyu Liu.
Jestem młodszy Lowell teraz, koncentrując się w informatyce.
Więc w tym seminarium jestem zamiar nauczyć was
trochę o tym, jak złożyć aplikację.
Yay, denerwować się na to.
>> Więc zanim nawet zacząć nurkować do rzeczywistej strony programowania,
niech po prostu bardzo szybko mówić o dlaczego warto budować aplikację iOS?
Dlaczego iOS tak niesamowite?
Tak więc pierwszym problemem, pierwszy rzecz, która jest dość niesamowite dla nas,
zwłaszcza jako CS50 student, jest to, że iOS
wykorzystuje Cel C. Cóż, nie Nowy język nazwie Swift,
ale my nie będziemy używać, że w tym seminarium.
Jeśli jesteś zainteresowany Swift, nie Seminarium jest niezależne o tym.
Ale Cel C jest w zasadzie rozszerzeniem C. Znaczenie
że wszystko, co można wykorzystać w C być przetłumaczone na język Objective C
bardzo łatwo.
>> Jak można się później, że rzeczywiście istnieją pewne bardzo podstawowe składni, są
w zasadzie dokładnie tak samo C i Objective C. Tak więc,
od zażycia CS50 aż tak daleko, to już
wiem, Objective C, co najmniej 40%.
Ponadto, Apple ma bardzo solidne API dla systemu iOS.
Istnieje wiele naprawdę szalony rzeczy, które możesz zrobić.
Z których jeden jest ktoś faktycznie stworzył aplikację dla systemu iOS
dla samochodów kontroli, które jest całkiem interesująca.
Prawdopodobnie helikopter jest bardziej ekscytujące.
Ale to, jak potężny API iOS może być.
>> I tak możesz mieć zorientowali się w tej chwili,
Przepełnienie stosu jest prawdopodobnie jednym z najważniejsze zasoby online
dostępne.
I dobrą wiadomością dla każdego Jedynym problemem można ewentualnie
myśleć podczas budowania swojej Ostateczny projekt w Objective C,
istnieje prawdopodobieństwo odpowiedzi przepełnienie stosu.
To jest po prostu niesamowite.
Oprócz tego, iOS jest naprawdę platformą
gdzie można osiągnąć ogromne Publiczność przy niewielkim wysiłku.
To nie tak jak Android, gdzie wszystko jest bardzo rozdrobniony.
>> Wszystko iOS jest jednolity.
I tak długo, jak stworzyć aplikacja dla iPhone,
możesz bardzo łatwo port, który do iPada, mini iPad, iPhone lub różne rozmiary.
Są to bardzo wygodne.
I to jest po prostu bardzo dobry dla imponuje swoim znajomym.
Możesz po prostu przytrzymaj iPhone i poinformować swojego znajomego hej,
jest to aplikacja robię.
Możesz to zrobić dla każdego aplikacje desktopowe, co jest miłe.
>> Dobra, teraz niech rzeczywiście dostać do języka Objective C
Więc dlaczego nie zacząć niektóre naprawdę podstawowe składni.
Jak już wspomniałem wcześniej Cel C Jest to w zasadzie rozszerzeniem C
Tak wiele składni podstawowej są dokładnie taki sam.
Deklarowanie zmiennej i dodanie dwóch zmiennych wraz
Jest dokładnie tak, jak zrobiliśmy w Mario.
Nic nowego tutaj.
>> Podobnie lokatorem pętli i stan jest taki sam.
Można to zrobić w pętli tak jak ty nie zrobił w Mario [niesłyszalne].
I można zrobić warunki tak jak to, co
były wykonywane w poprzednich zbiorów p.
Jednak, Objective C Nie jest całkowicie C,
i to jest coś, co jest trochę dziwne o tym.
>> Pierwszy z nich jest, że gdy jesteś robi programowania C, zazwyczaj zadzwonić
to i nazwa biblioteki.
Ale w Objective C wywołać taki przywóz.
Generalnie mówiąc, funkcjonalność, tylko różne nazwy.
I słowa są faktycznie trochę dziwne.
Widać, że pierwsza rzecz, która jest trochę dziwne
jest to, że masz dość weird-- sorry-- masz dość dziwne NS
podpisać tutaj.
I druga rzecz że to trochę dziwne
to masz na znak przed faktycznie deklarując ciąg.
Więc w zasadzie oznacza znak że łańcuch jest nie tylko łańcuch,
to jest rzeczywiście obiekt.
Mamy zamiar wyjaśnić które później tak nie
paniki, jeśli nie zrozumieć, co to znaczy.
I drukowanie do konsoli jest trochę inny, ponieważ w C nazywamy printf,
ale w Objective C nazywamy [niesłyszalne].
>> Można się zastanawiać, co to jest.
To jest w zasadzie printf, tylko inny język.
Dokładnie takie samo zastosowanie, dokładnie takie same funkcje.
Otóż ​​okazuje się, że Cel C rzeczywistości
ma ns prefiks w prawie wszystko, co podstawowy typ danych,
NSString, NSArray, NSDictionary.
Wynika to z faktu, że ns faktycznie oznacza kolejny krok,
która to firma, która Steve Jobs założył,
która jest firmą, w której języka Objective C rodzi.
Tak to jest w zasadzie tradycji.
Wiem, że to trochę dziwne, ale to jabłko.
>> Więc coś, co jest jeszcze dziwniejsze niż jest deklaracja funkcji.
To jest bardzo różne od tego, co zobacz w C, bo tutaj to rzeczywiście
nie wygląda jak C więcej.
Co masz here-- przez Droga ta nie jest punktor,
to jest znak minus.
Masz nawias znak minusa nieważne, a następnie nazwa funkcji.
Powiedzmy, że jeśli mają Hello World, a następnie
Typ zwracany byłby nieważny bo nic nie powrócić.
>> Co robi się naprawdę dziwne jest to, że kiedy jesteś
mające więcej niż jeden parametr przechodząc do samej funkcji, które
będzie naprawdę dziwne, jak pokazano tutaj.
Mamy nazwę metody, nazywa addInt do [niesłyszalne]
i przekazujemy jeden parametr.
Ale po tym, mamy więcej nazwa metody połączenia z.
A po z przekazujemy Drugi parametr.
To jest rzeczywiście trochę dziwne, ale wszystkie te deklaracje funkcji
według tego samego schematu, jak ta.
>> Mamy znak minus na początku.
Znak minus może być znak plus czasami na podstawie jakiego rodzaju metody
jest to.
Metoda jest w zasadzie inna nazwa funkcji.
I będziemy wyjaśnić, że później, gdy
mówimy o obiekcie Programowanie obiektowe.
Najpierw określ zwrot wpisz w nawiasach,
po której pochodzi nazwa metody.
Jesteś przekazując jeden parametr.
A jeśli masz więcej parametrów należy rozszerzyć nazwę metody
iw zasadzie napisać coś więcej.
>> To może być cokolwiek chcesz.
W naszym przypadku jest to o.
Ale można powiedzieć, zakończenia lub lub lub abc pełny bar, co chcesz.
A potem, że jesteś przekazując parametr B.
To jest bardzo dziwne Konwencja ale jesteśmy
będzie chciał zobaczyć, dlaczego jabłko aby to zrobić bardzo szybko.
Więc jak wywołanie funkcji?
Wywołanie funkcji w Cel C jest różne od C
>> Właściwie, nazywając Funkcja w Objective C
jest bardziej jak mówisz do kogoś.
Tutaj mamy siebie, co nazywa się obiektem.
Jesteś w zasadzie mówi obiekt siebie powiedzieć "Hello World!"
To jest to, jak do wywołania funkcji.
Nazwa obiektu i metody łączy się ze sobą.
I to jest dziwne rozszerzenie do nazwy metody naprawdę wchodzi w grę.
>> Spójrzmy na drugim przykładzie.
Po prostu zdefiniowane metody nazywanej addInt z bla bla bla.
Więc w tym przypadku, gdy dzwonisz że szczególne [? wiadomość?] to będzie
wyglądać jak samo addInt: 10 z: 2.
To brzmi jak angielski.
Chociaż funkcja Deklaracja funkcji jest dziwne,
punkt Objective C-tych Metoda oświadczenie wzór,
jest to, że gdy dzwonisz Funkcja lub metoda
to brzmi jak rzeczywistej angielskim.
Więc to jest bardzo intuicyjne gdy pojawi się w nim.
>> Szczególnie w tym przypadku, gdzie można w zasadzie
zobaczyć, że nazwa funkcji jest rodzaj dokumentowania się.
Nie trzeba wszelkie Wyjaśnienie, aby zobaczyć więcej
co dokładnie się dzieje, co dokładnie jeden parametr robi.
Wychodząc poza tym, porozmawiajmy trochę nieco na temat programowania obiektowego.
Obiekt jest programowaniu jednym z podstawowych programów
techniki i wzory, które jest wykorzystywane przez Cel C. Cel C
nazywa Objective C, nie C, za naprawdę dobry powód.
>> Więc zanim przejdziemy do Cel składni C,
Miejmy bardzo szybko spojrzeć na co dokładnie jest przedmiotem.
Mamy chyba zrobić coś jak obiekt przed, w którym
nazywany jest struktura, gdy jesteś wdrażania drzewo lub połączonej listy
lub [? spróbować. ?] Tak, to w zasadzie jak struct,
ale jest o wiele więcej możliwości niż to.
Obiekt posiada metody i właściwości.
Metody są w zasadzie funkcje.
Zasadniczo działa, że specyficzne dla określonego obiektu.
>> I właściwości są w zasadzie Pole określić w struct.
Tak więc dla każdego obiektu mamy kilka nieruchomości
że ma pewne zmienne, które są specyficzne dla danego obiektu.
I mamy kilka funkcji, które są również specyficzne dla danego obiektu.
I funkcje są wywoływane metody oraz zmiennych nazywane są właściwości.
To tylko nazwa.
Podczas rzeczywistości, każdy widok widzisz podczas otwierania aplikacji iOS,
powiedzmy, Twitter lub Facebook, każdy widok można zobaczyć jest obiekt.
I nawet cała aplikacja jest Obiekt na początek.
Bardzo ciekawa koncepcja.
>> I dlaczego chcemy obiektu zorientowane programowanie?
Więc można sobie wyobrazić, że kiedy cię Program robi się dość skomplikowane.
Powiedzmy tylko, gdy jesteś realizacji szachownicę,
logiczny ma być bardzo skomplikowane.
Masz 36 różnych sztuk, tak, że jeśli
chcę napisać logiki dla wszystkich 36 różnych sztuk w szachy,
że będzie dużo różne funkcje i zmienne.
Jest wiele problemów.
I pewnie masz zamiar napisać inna metoda lub inna funkcja
Dla każdego elementu, który dokładnie kontrolować, co robią.
>> Ale jeśli nie obiektowego programowania wszystkich tych kawałków
mogą być wydobywane w jeden obiekt.
A obiekt będzie miał pewne wspólne Właściwości, takie jak Jaką sztukę
to jest?
Jaki to kolor?
Jak może się poruszać?
I w ten sposób masz znacznie uproszczona logika nim.
Więc to jest po prostu bardzo dobry sposób do skomplikowanych programów,
i hierarchiczne relacje w ramach programu, bardzo proste.
Jak mamy zamiar zobaczyć Dlatego bardzo szybko, kiedy
my rzeczywiście robi programming-- kiedy jesteśmy naprawdę
robi kod S programowanie sesji później.
>> Oraz, oprócz tego, oriented programming obiektu
jest po prostu świetna zabawa.
Musisz zaprojektować własny obiekt.
Musisz zaprojektować co robi że wygląda jak ty.
Nie ma dobrej odpowiedzi na to.
I to zupełnie za interesujące.
Tak więc w programowania obiektowego, dwa podstawowe pojęcia
będą klasy i instancji.
Klasa jest w zasadzie szablon do obiektu.
I instancji jest w zasadzie jeden konkretny obiekt.
>> Powiedzmy, że robisz cookie.
W tym przypadku, każdy Cookie faktycznie kończy się z
będzie przedmiotem.
Ale płyta Cookie używane do pieczenia wszystkie ciasteczka będą klasy.
Klasa jest w zasadzie szablonu.
I instancja będzie jeden konkretny Obiekt powstał z tej klasy.
>> I instancja zostanie utworzona na podstawie deklaracji klasy,
jak zobaczymy w kolejnych slajdach.
Więc faktycznie naprawdę szybkie przykładem [niesłyszalne].
Powiedzmy, że mamy do deklarowania Obiekt dla kota.
Obiekt powinien have-- Kot powinien klasy
mają pewne właściwości i metody.
Jakie właściwości powinno się Klasa have-- Kot powinien mieć?
>> Na przykład, kolor, wieku i rasy, tych,
będzie zmienne, są specyficzne dla każdego kota.
A to są pewne rzeczy, że używamy do opisania kota.
Jakie metody, lub co może kot zrobić?
Kilka przykładów byłoby pościg myszy, jeść ryby lub po prostu meow.
Jest to bardzo szybkie Przykładem klasy kot.
I bardzo specyficzne kot obiekt będzie kot
gdzie określamy kolor skóry, wiek i rasę.
>> W takim przypadku, nasz obiekt jest nie klasy już.
Kopiujemy szablon z klasy i możemy podać każdą konkretne informacje
do tego konkretnego obiektu aby niezależny.
A kiedy dzwonisz Sposób wewnątrz obiektu
po prostu zadzwonić meow na obiekcie, który jest po prostu stworzony kota.
>> Prawdopodobnie będzie wydrukować coś jak "Hello World!
Miau ".
Całkiem ładny.
Wszystko w porządku, po prostu dostać się do niektórych szczegółów
i zobaczyć, co dokładnie oznacza, że przekładają się na bycie programowania iOS.
Tak więc w programowaniu iOS każdy Zajęcia będą realizowane w dwóch plikach.
Jeden plik jest tutaj, co nazywa interfejs.
Kolejny plik jest tutaj, co nazywa się realizacji.
>> Zazwyczaj interfejs będzie miał extension.h
jak widzieliśmy w bibliotekach C.
A plik realizacja jest będzie mieć extension.n.
To trochę dziwne.
Ale .N oznacza faktycznie .c, że nie jest Podstawowa różnica między tymi,
dwa.
Więc w tym przypadku, możemy zobaczyć, że jesteśmy deklarując interfejsu, Kot: obiekt.
To się nazywa spadków.
Jesteśmy w zasadzie dziedziczenia Kot z klasy klasy obiektu.
Więc każda nieruchomość i sposób, że był uprzednio zdefiniowane w klasie obiektu
zostanie automatycznie zdefiniowana w klasie kot, jak również.
>> Oprócz tego, że definiuje kolor rasy i wieku, trzy zmienne.
To faktycznie wygląda coś, czego nie robiłem.
Wygląda na to, struct.
Która jest w zasadzie składni dla deklaracji struct,
i to jest całkowicie poprawne.
A skoro już wspomniałem wcześniej, Różnica struct
a obiekt, jeden z podstawowe różnice
jest to, że obiekt ma metody podczas gdy struktura ma tylko zmienne.
Tak więc oprócz właściwości lub zmienne, które stworzyliśmy dla obiektu,
możemy określić jakąś metodę.
>> Powiedzmy, że mamy tutaj dwa sposoby, jeden jest meow,
innym jest pościg myszy.
Prawdopodobnie chcą być przechodzącej Parametr podstawie poprzedniej metody
Deklaracja wzór.
Prawdopodobnie chcesz być przechodząc myszy.
I prawdopodobnie będziesz chciał zwrócić oznaczający bool
jeśli twój kot ma powodzeniem złapać mysz, czy nie.
>> Jest to interfejs, ale możemy zobaczyć, że faktycznie interfejs
nic nie robi.
To po prostu mówi, program, co exists-- co występuje w klasie kotów.
Tak więc, aby dla Program coś zrobić,
musimy mieć pliki realizacji.
Więc tutaj, pierwsza rzecz, którą robimy jest oczywiście sprowadzamy interfejs.
Po sprowadzamy interfejs, zdefiniować sposób.
>> Powiedzmy, że tutaj meow po prostu wydrukować
"Hello World!" do konsoli.
I po zakończeniu realizacji Plik, mamy bardzo dużo zrobić.
Jest to po prostu klasa Deklaracja dla jednej grupy.
Teraz pojawia się pytanie, jak można zadeklarować zmienną?
Sposobem jest użycie klasy do tworzenia Obiekt w Objective C, tu jest napisane.
>> Najpierw określić, że jest to wskaźnik kot,
bo każdego obiektu w celu C wreszcie zrealizowany jako wskaźnika.
I ty nazywasz klasę, nazywamy je jak Alloc, która jest zasadniczo malloc,
mówi systemu operacyjnego Potrzebuję trochę miejsca w pamięci dla tego obiektu.
Po, że mamy obiekt już i po prostu go zainicjować.
To tylko konwencja.
Wiem, że to jest trochę dziwne, ale w rzeczywistości jest to w jaki sposób Apple robi rzeczy.
>> Przypisywanie właściwości jest rzeczywiście bardzo proste.
Jest bardzo podobna do co robisz, kiedy
przypisujesz pewne specyficzne Pole wewnątrz struct.
Trzeba tylko zmienną imię, nazwę właściwości,
i przypisać konkretną wartość.
I wywołanie metody jest bardzo podobny.
Wywołanie metody jest w zasadzie to, co mówię o
na wywołanie innej metody, w Objective C
>> Jesteś przechodzącą obiekt, w w tym przypadku to będzie przypadku kategoria,
a ty przekazując nazwę metody.
Jakby pan mówi do obiektu, przypadku kategoria, że ​​należy meow.
To dość ciekawe.
Następnie, nie jest bardziej istotne wzorzec projektowy
że musimy porozmawiać o zanim się do rzeczywistego kodu S.
To nazywane jest wzorzec projektowy sterowane zdarzeniami programowania.
Jest to również prawdopodobnie jednym z najbardziej Podstawowe idee w programowaniu iOS.
>> Więc chyba nie wiesz co dokładnie jest programowanie sterowane zdarzeniami,
ale to naprawdę nie jest takie straszne.
No faktycznie, masz już zrobione wcześniej.
Jest to jedna z linii to prawdopodobnie już napisane w ostatnim [niesłyszalne]
z CS50, google.maps.event.addListener (marker,
"Kliknij", function () {}) :.
Poprzez wywołanie tej linii jesteś zasadniczo mówiąc komputer
że gdy impreza pod nazwą "Kliknij" dzieje się na znacznik,
używać tej funkcji.
>> To różni się od co robisz w mario.c.
W mario.c po prostu uruchom program raz, to daje moc,
i gotowe.
Są trochę jak jeden strzał. programy
Programy sterowane zdarzeniami są bardzo, bardzo różne.
Wyobraźmy sobie, gdy Facebook jest jednym Program strzał to naprawdę nie jest dobre.
Wystarczy przejść na Facebook raz to zrobić.
To daje jakieś wyjście i nigdy nie dostałem go z powrotem.
Nigdy nie ma nic więcej.
>> Więc tutaj, zwłaszcza wzór używamy jest
zdarzeniami, tak że każda funkcja będzie
być oparte na tym, co złowione Wydarzenie stało.
Na przykład, jeśli mamy przycisk i określić
że w każdym przypadku, że kliknięciu przycisku, wywołać funkcję o nazwie "Hello World!"
W ten sposób możemy naprawdę Funkcja zarządzania logiki
przepływu w bardzo elastyczny sposób.
Użytkownik może zrobić lub wywołania funkcji że została już wywołana.
Jest całkowicie oparte na tym, co zrobić, użytkowników.
>> Tak więc widzimy, że jest to w rzeczywistości o wiele lepiej niż mario.c.
I dobrą wiadomością jest to, że Właściwie nie nowy pomysł.
Wy już to zrobiły że w ostatnim błąd ustawienia.
W Objective C, więc nie są trzy różne schematy
programowanie sterowane zdarzeniami.
Pierwszy schemat jest nazywa działania docelowe,
gdzie można powiązać przycisk prasowa z niektórych funkcji.
Powiedzmy, po kliknięciu niektóre przycisk wywołania niektórych funkcji.
Jest to bardzo prosta czynność cel.
>> Drugi jest rzeczywiście najtrudniejszy,
to się nazywa delegacja na protokole.
Mamy zamiar wyjaśnić które szczegółowo później.
A trzeci sposób jest powiadomienie.
Nie jest to faktycznie Bardzo ważne jeśli chodzi
jak my zaniepokojony, ponieważ szansa że masz zamiar korzystać z powiadomień
w ostatecznym projekcie jest dość niska.
Tak więc mamy zamiar pominąć tę część.
>> I będziemy nurkować w delegacji na protokole.
Więc co dokładnie jest protokół?
A co to w delegacji?
Porozmawiajmy o protokół na początek.
Protokoły są tylko wydarzenia.
Ale te wydarzenia są przyznawane Ci przez Apple na początek.
Na przykład, nie jestem całkowicie pewien, jak wielu z was
Chłopaki używać oryginalnego Apple mail lub kontakt aplikacja,
ale za każdym razem przewijania Stół i naciśnij konkretnej komórki
w tabeli, to jest zdarzenia.
>> A jeśli chcesz zrobić zdarzenie przez siebie,
to faktycznie trochę ciężko.
Więc Apple skoro nawet do ciebie tak, że można po prostu korzystać bezpośrednio
Impreza zrobić coś na własną rękę.
Protokoły są rzeczywiście bardzo, bardzo szeroko stosowane
w Objective C. Dobrze się Fakt, każda aplikacja
ma coś złapać app delegata.
Wewnątrz delikatna jest wszystko protokoły ładowania aplikacji.
>> Powiedzmy, że nie jest Impreza dla aplikacji nie obciążenie.
Więc co się stało po tym, jak utworzona aplikacja, po otwarciu aplikacji,
po zamknięciu aplikacji, lub po umieścić iPhone spać.
Są to wszystkie zdarzenia, które ma już wam.
I pierwotnie wewnątrz tych cząstek nie będzie realizacji.
Firma Apple po prostu powiedział, że tej funkcji stanie się, gdy jakieś zdarzenie nastąpi,
ale to, co z tym zrobić Funkcja ta jest całkowicie do Ciebie.
>> Delegacja jest w zasadzie mówi klasę
że należy obsługiwać te protokoły.
To trochę mylące, ale to będzie
znacznie wyraźniejsze, gdy robimy kody s w akcji.
Delegacja na protokole jest rzeczywiście bardzo wytrzymały mechanizm, w tym sensie,
że jeśli robimy delegacji do określonej klasy
możemy głównie obsługi wszystkie rodzaje zdarzeń
przy użyciu dowolnej klasy mamy, bardzo wygodne narzędzie.
>> Więc jeden szybki przykład dla Delegacja na protokole
będzie to, co właśnie rozmawialiśmy.
Protokół ten nazywany jest specjalnie tableview [niesłyszalne] wybrać rolę
na [? Indeks?] [? przeszłość. ?] Więc to Wydarzenie, które się złapać, gdy ci
rzeczywiście specyficzne dotknij komórek w tableview,
powiedzmy w mailu lub w aplikacji Kontakty.
>> Wewnątrz funkcji nie było Początkowo nic nie robi.
Funkcja nie niczego domyślnie.
Ale można określić co robi funkcja,
biorąc pod uwagę to, co chcesz z Twojej aplikacji.
Bardzo wygodne narzędzie.
I z tym wszystkim, powiedział jest, ja w zasadzie
obejmuje kilka bardzo podstawową składnię i Podstawowym pojęciem w celu C
programowania, a my możemy zrobić ów kod.
O wiele bardziej ekscytujące.
Więc ów kod jest rzeczywiście trochę przytłaczające
otwarcie go po raz pierwszy.
>> Jedno szybkie notatki, więc jeśli chcesz zrobić rozwoju iOS,
Gorąco polecam masz Maca.
Ze względu na sposób rozwoju iOS Windows jest bardzo, bardzo trudne.
Jest to wykonalne, ale jest to naprawdę trudne.
I na pewno nie Nie chcesz używać g zmienił.
Więc ów kod mamy kilka różnych obszarów.
Kiedy po raz pierwszy otwarcie s kod pojawi się obszar nawigacji,
które w zasadzie pokazuje wszystko pliki, które jest w bieżącym projekcie.
>> Masz obszar paska narzędzi, które jest w zasadzie zarządzania widoki,
lub jakiś mały szybkie Narzędzia o ów samego kodu.
I to jest rzeczywista powierzchnia redaktorem.
Obszar ten jest bardzo podobny g edycja, ale znacznie lepiej niż g edycji.
I w tym prawym polu, jest zwany obszar gospodarcze.
Powierzchnia staje się bardzo przydatne, gdy podczas tworzenia interfejsu lub określającą
kilka krótkich konfiguracje dla Twojej aplikacji.
>> I ostatnim obszarem jest debugowanie.
Ten obszar zawiera konsolę.
Jeśli więc powiedzieć, printf, lub NSLog w naszym przypadku,
wszystkie wyniki będzie tutaj podane.
Wszystko w porządku?
Myślę, że możemy bardzo szybko zrobić Przykład programowania iOS.
I niech faktycznie otworzyć ów kod.
Więc za każdym razem otwierać s kod, to pokaże się coś takiego.
To się zapytać Co chcesz zrobić?
Czy chcesz rozpocząć coś losowy, plac zabaw dla dzieci, w zasadzie można
może po prostu przetestować kod bez faktycznie, zobowiązując się do każdej aplikacji.
>> Czy chcesz utworzyć nowy projekt?
A może chcesz kontynuować pracy na istniejącym projekcie?
W naszym przypadku mamy zamiar aby utworzyć nowy projekt.
Więc to jest naprawdę ładne, y kod faktycznie ma już
Szablony dać ci kilka do tworzenia obiektów.
Jeśli chcesz zrobić grę, s kod faktycznie ma szablon gry dla Ciebie,
Strona oparta ma zastosowania, aplikacja zakładka.
W tym przypadku, będziemy zrobić coś bardzo prostego,
i będziemy korzystać Jeden wniosek widok.
>> Po, że tylko to, co chcesz zadzwonić produkt, a jak masz na imię,
jaki jest twój identyfikator i jakiego języka używasz.
Tu nie chcesz sprawdzić przy użyciu danych Core.
Rdzeń danych jest w zasadzie databasing iOS.
Jeśli nie Rdzeń danych, s Kod będzie zdefiniowanie
znacznie bardziej skomplikowana zajęcia dla Ciebie.
Tak, aby wszystko proste, jesteśmy po prostu zrobić bez danych Core
teraz.
>> Problem mamy zamiar być przy użyciu jest that-- problemu
jedziemy do tworzenia jest, że my w zasadzie chcesz importować Mario z C
do aplikacji iOS.
Więc nazwijmy, że Mario-iOS.
Oczywiście, że można określić, jakie chcesz umieścić w swoim projekcie.
A tam idziemy.
>> Więc to jest trochę Przeważająca, ale w rzeczywistości jest to
co właśnie zobaczyłem na slajdach.
I pierwszy obszar widzimy teraz jest w zasadzie konfiguracja projektu.
Więc wszystko, co chcesz zrobić Projekt, jaki rodzaj urządzenia,
po prostu powiedzieć, co to za urządzenia Czy chcesz, aby aplikacja pojawiać się na?
Czy iPhone, iPad lub uniwersalny?
Więc orientacji urządzenia, wszystkie te rzeczy.
Nie bardzo ważne, ale może być, ale
Jest to miejsce, gdzie można skonfigurować Twój projekt, jeśli rzeczywiście
chcą wdrożyć do sklepu Apple.
>> Dobrze, spójrzmy na coś, co jest w środku naszego kodu.
Przejdźmy przez nawigatora plików.
I to są wszystkie pliki, które już przyszedł z szablonu, bardzo ładne.
Kiedy więc kliknij jedną z nich to jest, jak to wygląda.
Bardzo podobny do g edycji.
Ale widać, że podświetlanie składni jest chyba
trochę ładniejszy.
I to jest w rzeczywistości o wiele bardziej potężniejsze niż edycji g.
I można auto kompletne Wiele rzeczy dla ciebie,
jak zobaczymy bardzo szybko.
>> Otwórzmy obszar debugowania, jak również.
W porządku, jak widać, Konsola jest tutaj.
To jest to, co masz zamiar zobaczyć, gdzie jesteś w printf lub nsloging coś.
Więc bez zbędnych ceregieli, niech rzeczywiście skompilować aplikację i zobaczyć co się dzieje.
Jedna zasadnicza cecha s kod, jest to, że ów kod
pochodzi z symulatora iPhone.
Więc nie musisz mieć iPhone wypróbować swój projekt,
s Kod może symulować, że dla Ci, jak widzimy teraz.
>> To całkiem miłe.
To zabiera trochę Trochę czasu, aby skompilować
iw zasadzie mamy pusta aplikacji
które w rzeczywistości nie robi nic.
Ale to kompiluje.
To dość niesamowite.
To znacznie lepiej niż C, co?
W porządku, niech spróbuj dodać coś.
Jeden plik, który jest trochę dziwne tutaj nazywa storyboard.
To jest naprawdę wielki, niesamowite cechą ów kod.
Ponieważ w ów kod, można faktycznie przeciągnij i upuść elementy do interfejsu
i to bezpośrednio widoczne.
Spróbujmy tego.
>> Mamy upuść etykietę tutaj "Hello World !!!"
Możemy centrum tego.
Całkiem fajne.
Teraz możemy uruchomić ten symulacji zatrzymania.
Tutaj mamy "Hello World !!!"
Nawet nie zrobić jeszcze żadnego kodowania.
Co do cholery się dzieje?
To jest jak potężny Interfejs Builder może być.
Ktoś nawet powiedział, że można chyba tylko
zakończyć aplikację bez pisemnej prawdopodobnie tysiąc linii kodu
tylko za pomocą Konstruktora interfejsu.
Ale to chyba nie Najlepszym sposobem, aby to zrobić.
>> Teraz rzeczywiście dostać się do kodowania.
Więc w struktury pliku jest rzeczywiście bardzo interesujące
ponieważ, jak widać, nie ma główną funkcją w dowolnym miejscu.
Patrz?
Jak już wspomniano wcześniej, widać, że ta
Wdrożenie jest plik dla konkretnej klasy.
Ale nie ma głównego w dowolnym miejscu.
Więc gdzie jest głównym?
Faktycznie, jest głównym, ale Głównym jest ukryte od Ciebie.
Głównym jest tutaj.
To wygląda znajomo.
>> Więc w zasadzie to, co iOS robi wewnątrz główne
jest to, że gdy jest głównie nazwie, która jest w zasadzie
gdy aplikacja jest wykonywana, to tworzy obiekt o nazwie AppDelegate.
Jak już wspomniałem wcześniej, cała Aplikacja jest w rzeczywistości obiekt sam w sobie.
Tak więc w ten sposób, w zasadzie iOS aplikacja mówi kompilator
że OK, mam zamiar stworzyć Produkt nazywa AppDelegate,
i to będzie moja aplikacja.
Więc trzeba iść przez ten AppDelegate
i zobaczyć, co robi ten facet.
Moja praca jest dla mnie zrobił.
>> A w AppDelegate widać, że istnieją pewne funkcje naprawdę dziwne,
dobrze faktycznie metody, które Apple już wam.
Co to jest?
Są to właściwie tylko protokoły że mówi.
To są zdarzenia, że ​​Apple dał Ci zacząć.
W niektórych nie ma nic funkcji już teraz,
ale jeśli chcemy zainicjować coś dla naszej aplikacji
przed wejściem do wyświetlania Żaden pogląd, możemy to zrobić tutaj.
>> Możesz po prostu przeczytać nazwę i myślę, Impreza jest rzeczywiście bardzo jasne.
Więc teraz głównym stworzył Obiekt dla AppDelegate.
A co AppDelegate zrobi jest faktycznie również ukryta przed tobą.
AppDelegate zamierza rozpocząć loading akcji ViewController.
Więc nie jest to w zasadzie zamiar zacząć załadunku wszystkie widoki, które trzeba
i po prostu sprawiają, że widok na podstawie hierarchii.
>> Więc w tym przypadku mamy tylko jeden widok, który jest tutaj.
Więc to jest tylko widok że będzie się nazywać.
Logika ViewController jest tutaj.
Jest to kod, który w rzeczywistości kontroluje widok po prostu widział.
Dobra, zróbmy coś tutaj.
Więc viewDidLoad brzmi jak imprezy, podczas gdy w rzeczywistości jest to również delegatem,
jest to również protokół.
>> Więc cokolwiek widok jest załadowany, wszystko wewnątrz funkcji
zostanie wywołana.
W tym przypadku powinniśmy zobaczyć "Hello Tianyu! ", Jeśli uruchomić program.
Robi się trochę powolna kompilacji plików storyboardu.
Ale tak naprawdę, to nie patrz na to wyjście.
To jest bardzo fajne.
Teraz faktycznie Mario.
Idę do zdefiniowania działa bardzo szybko.
marioWithLevels: wyniki (int) poziomu.
>> W porządku, to jest rzeczywiście niesamowite cechą zakończeniu auto s kodu.
Więc kiedy piszesz i wpisz wprowadzić, to już zrezygnowała z szablonu
dla Ciebie, co jest całkiem fajne.
To powinno wyglądać naprawdę znane was.
Przykro nam, że to moja wina.
Wszystko w porządku, super.
Ta logika powinna wyglądać naprawdę zna do was, zwłaszcza tylko Mario.
>> Ale teraz będziemy drukować do Konsola za każdym razem,
ponieważ chcemy, aby w jakiś sposób utrzymać utwór z tego, co jest drukowane.
Mamy zamiar użyć Wynika jakoś później,
aby wyświetlić drukiem się doprowadzić do użytkownika.
Zamiast więc jesteśmy po prostu nslogging wszystko,
które mamy przechowywania wszystko w wyniku wywołania funkcji,
ale logika jest dokładnie taka sama.
Po tym jak go kończymy po prostu wydrukować nasze wyniki.
>> A tu zamiast drukować na moje nazwa, mamy zamiar wywołać funkcję.
Zobaczmy, co się dzieje.
Ups, oczywiście.
Mamy ładne mała piramida tutaj.
Jest to w zasadzie C, jesteśmy po prostu manipulowania gdzie wywołać funkcję
i jak funkcja wyglądać.
Nie ma nic innego.
Ale to jest w rzeczywistości Nie bardzo ekscytujące tutaj
dlatego, że nie widzisz coś z iPhone app.
>> A więc jeśli masz iPhone app-- jeśli rzeczywiście mają prawo Mario iOS
teraz, nie będziesz aby zobaczyć wszystko, co
nie ma nic wspólnego z Mario, ponieważ wszystkie te wyjścia do konsoli
są ukryte przed użytkownikiem.
To, co widzisz, co jest "Hello World !!!"
Nie dobrze.
Teraz spróbujmy zrobić użytkownik widzi co dokładnie mamy do drukowania.
Więc nie musimy do znakowania więcej.
Spróbujmy dowiedzieć się czegoś inne, mogą być użyteczne.
>> Tu jest rzeczywiście jednym Element, który jest nazywany
Pole tekstowe, które mogłyby być bardzo pomocne dla nas.
To w zasadzie pokazuje region tekstu, który może być edytowany.
Tak, że wygląda naprawdę pomocne.
Teraz przeciągnij go i upuść go.
Wow, mamy widok tekstowy naszym zdaniem, bardzo fantazyjne.
To jest trochę za duży.
Niech będzie mniejsza.
Umieścić go w centrum.
Sprawiają, że mniejsze, jak również.
>> Teraz mamy widok tekstowy, który mogliśmy być używany do wyświetlania nasz wynik końcowy.
Ale teraz to na pewno nie będzie działać
bo nie ma no-- ViewController po prostu
zdefiniowane nie wie, że Widok jest tam tekst.
Więc trzeba jakoś odwołuje się widok tekstowy po prostu
stworzony z klasy, że już z nami.
>> Sposób, w jaki to rzeczywiście bardzo magiczne.
Więc otwórz storyboard.
Istnieje specjalny [niesłyszalne] nazywa [? Asystent?] [niesłyszalne].
Po kliknięciu, że jest to zamierza otworzyć dwa pliki.
Jednym z nich jest klasy i druga Widok jest odpowiedni dla niego.
To bardzo, bardzo pomocne.
I niech po prostu przechodzi pliku .h.
Kontrola ta jest [niesłyszalne] logika.
Kontrola Naciśnij i przeciągnij Widok tekstu do deklaracji.
Mamy zamiar zadzwonić że outputView.
Podłącz.
Więc tutaj mamy oświadczył nowy nieruchomości na naszej klasie ViewController.
Oraz nowy obiekt Widok jest po prostu tekst
stworzyliśmy w budynku interfejsu.
Więc w ten sposób mogliśmy Dostęp do wszystkich danych
i manipulować wszystko, co jest w środku Widok wyjście, które jest niesamowite.
>> Tak więc w naszym rzeczywistym kodzie zróbmy coś z tym.
Więc tym razem, gdy jesteśmy jak druku na ostateczny wynik dla Mario,
jesteśmy w nie zalogowaniu niczego.
To znaczy możemy utrzymać Oświadczenie logowania.
Oprócz tego, że wysłać odczyt po prostu
utworzony z myślą wyjścia, które jest UI TextView właśnie utworzyliśmy.
Teraz zobaczmy, co się stanie.
Wow.
Mamy piramidy w aplikacji już teraz.
>> Tak więc użytkownik może zobaczyć nasze wyjście ponieaz skopiowaliśmy wyjście z naszego kodu
do naszego interfejsu.
To całkiem dobry.
To nie jest w rzeczywistości, że ekscytujące, ponieważ can--
Wszystko jest ok robi przedstawiający piramidę do Ciebie,
i nic nie można zrobić.
To nie jest szczególnie ekscytujące.
Więc teraz zróbmy przycisk że będzie jasne poglądy.
Wydaje się, że przycisk będzie pomocne.
Przeciągnij i upuść.
Jeden przycisk.
Przycisk dwa.
>> Kiedy więc kliknij lewy Przycisk, widok należy wyczyścić.
Nie powinno być nic na ekranie.
A kiedy kliknij prawy przycisk, Mario,
Widok będzie ponownie pojawić.
Więc w ten sposób możemy również zrobić magiczne rzeczy, kontroli i przeciągnij
do deklaracji klasy w asystenta director--
w asystenta widza.
W tym przypadku mamy do określenia że powinny być działania.
clearMario.
>> Więc tutaj mamy już utworzony Akcja nazywa clearMario,
która jest metodą, która będzie nazywana gdy naciśniemy przycisk jasne.
Tak więc w naszym faktycznie kodu, po prostu umieścić tekst wyjściowy i widok wyjściowy
w nicość, a w ten sposób to wydaje się być oczywiste.
Poza tym, stwórzmy inna metoda nazywa runMario.
Oj, przepraszam, że nie powinno być w mieście.
Dobrze, że powinno za działania, jak również.
>> A kiedy ta funkcja jest nazywa, po prostu uruchomić Mario dziesięć.
Miejmy nadzieję, że będzie dobrze.
Czy to skompilować?
Tak.
Teraz mamy widok.
Mamy wyjście.
I niech po prostu zobaczyć, co się dzieje.
To nie ma.
To znowu.
Więc tutaj mamy określone jaką funkcję
zostanie wywołana gdy my na coś,
kiedy nacisnąć konkretny przycisk.
To jest przede Schemat działania docelowe
w przypadku napędzane programowania w Objective C
>> Oprócz tego, to nie jest bardzo ekscytujące
bo tak naprawdę nie możemy zmienić jak wysokie piramidy będzie,
więc prawdopodobnie chcesz w jakiś sposób uzyskać danych od użytkownika
i zmienić wysokość Piramida w oparciu o to, co wyjście.
Tak więc mamy zamiar zrobić.
Więc tym razem, kiedy nazywamy runMario, nie wystarczy zadzwonić Mario bezpośrednio.
Ta jest tytuł.
>> Delegat.
To jest bardzo ciekawe.
Co to jest delegatem?
Mam zamiar umieścić ja tutaj.
I mamy zamiar zobaczyć co oznacza, że ​​później.
Więc tutaj mamy już utworzony szczególnym przykładem nazywa wpisu UI
Widok.
Alarm UI jest widok w zasadzie to, co będzie
zobacz każdym razem coś wyskakuje się i prosi o wejście,
jak co się stanie, gdy starasz kupić coś na app store.
>> Poza tym, to po utwórz go, po prostu pokazać wpisu.
W porządku, niech tak szybko Test będzie, że praca, czy nie.
To jest bardzo fajne.
Teraz rzeczywiście stworzyć Pole wprowadzania do wpisu UI.
Oto jak to zrobić.
A my musimy mieć Widok wejścia do wpisu.
Bardzo fajne.
Powiedzmy, że 10.
>> To nie robi nic w prawo teraz, bo rozmowa rzeczywiście
nie uległ zmianie do wykonywania mario.
Tak stało się mało trochę dziwne, bo kiedy
naciskamy przycisk w dół, gdy my Naciśnięcie przycisku w widoku alarmu,
coś się stanie, ale to się nie stanie.
Jak możemy zobaczyć, że?
Skąd mamy wiedzieć, że użytkownik oddalił powiadomienie widok
a już wprowadzony numer, ponieważ teraz nic się nie dzieje naprawdę.
>> Cóż, można się domyślić to dobrze, delegacja.
Tak więc oprócz wszystkich te deklaracje,
musimy dodać nową delegacji do Alarm nazywana UI widok delegata.
Tak, że każdy Interakcja lub zdarzenie
że będziemy mieć z widokiem ostrzegania UI
ma być obsługiwane od naszej klasy, jak również.
>> Tak więc, oprócz tego, będą Widok kliknij przycisk wpisu w indeksie.
Ta została osiągnięta.
Więc w tym przypadku mamy already-- więc mamy
okazało się protokół, który będzie obsługiwać zdarzenie, kiedy
klikamy przycisk Gotowe na ostrzegania widzenia.
Więc za każdym razem, kiedy zwolnić Alarm widok, tak się stanie.
Pozwól mi tylko przetestować go bardzo szybko.
No rzeczywiście, dotarliśmy tutaj.
>> Więc, co nie będzie rzeczywiście się jest w rzeczywistości
uzyskać the-- Dlatego chcemy, aby wyjść Tekst, który mamy wcześniej
wpisana do ostrzegania widzenia.
I opiera się na tekście, jesteśmy będzie wyświetlać Mario.
To bardzo szybko okazuje się, jeśli to rzeczywiście działa, czy nie.
A więc w tym przypadku, jeśli wprowadzanie, powiedzmy, 10, powinniśmy zobaczyć 10.
>> Bardzo dobrze, mamy wiele tutaj.
To całkiem dobry.
Teraz ostatni krok będzie być: Tak Ostatnim krokiem musimy teraz zrobić
jest po prostu zadzwonić Mario z Poziom oparty na wejściu
że przygotowaliśmy się ostrzegania widzenia.
Tak więc trzeba konwertować ten ciąg na iOS.
Statyczny przepełnienia jest bardzo niesamowite.
A potem po prostu zadzwonić do siebie Wartość marioWithLevels.
Zobaczmy, że będzie faktycznie pracują, czy nie.
>> Jesteśmy już podane piramidę.
Spróbujmy zmienić wysokość.
To naprawdę działa.
To jest bardzo fajne.
Tak, że teraz można po prostu Wejście dowolna wartość chcesz.
Powiedzmy, że cztery.
To dość niesamowite.
Tak to jest w zasadzie Przykładem bardzo szybkie
w jaki sposób utworzyć projekt w ów kod i jak bardzo szybko drut
kilka naprawdę proste zdarzenia i funkcje.
>> Więc źródłem będzie należy umieścić w Internecie później.
Więc jeśli jesteś zainteresowany w jaki sposób działa system iOS Mario,
Mam zamiar umieścić dokładnie takie same Projekty na stronie CS50 później.
Jesteśmy w zasadzie zrobić z lato, zanim zakończymy
Chcę tylko wskazać wam się kilka naprawdę niesamowite zasoby, które
są dostępne w Internecie.
>> Oczywiście dokumentacji firmy Apple będzie bardzo pomocne.
A ponadto tym, że w szczególności Polecam cztery źródła, kod szkolnych,
domek na drzewie, AppCoda i WWDC filmy.
Szkoła oznaczeniu i domek na drzewie są wychowującą dwie internetowych, strony internetowe
która wyraźnie koncentrują od inżynierii oprogramowania.
Specjalnie dla kodu szkoły, mają naprawdę dobry tutorial na iOS.
>> To jest naprawdę szybkie przykładem na to.
Oni rzeczywiście stworzyć naprawdę cute-- spójrz na to niewiele cute iPhone
koleś tam, jest to dość niesamowite.
I sposób wyjaśniają Cel Składnia C jest zupełnie jasne.
Drzewa domu jest taka sama.
I AppCoda jest forum.
To rzeczywiście blog, który został uruchomiony przez bardzo doświadczonego Objective C
programista.
I te wszystkie tutoriale w AppCoda są bardzo krótkie i łatwe do wdrożenia,
gorąco polecam.
>> A jeśli jesteś programistą, na pewno go sprawdzić
jak filmy WWDC, gdzie można dowiedzieć się o najnowszych programowania iOS
techniki, API i bibliotek.
Tak, że jest dość dużo jest na seminarium.
Dziękuję bardzo.
I mam nadzieję, że się dobrze bawić tworzenie własnych aplikacji dla systemu iOS.