>> Tianyu Лиу: Еј, како е тоа се случува на сите?
И ова е IOS стан програмирање на објективни в семинарот.
И моето име е Tianyu Лиу.
Јас сум LOWELL JUNIOR токму сега, се концентрира во компјутерската наука.
Значи во овој семинар Јас сум ќе ви учат момци
малку за тоа како да се направи еден стан.
Yay, се возбудени за тоа.
>> Значи пред да се дури и на проектот за нуркање во конкретната програмирање страна,
ајде да зборуваме за навистина брзо зошто можеби ќе сакате да се изгради IOS стан?
Зошто iOS е толку страшно?
Така, првиот проблем, прво нешто што е прилично страшно за нас,
особено како CS50 студент, е дека iOS
користи Цел В. Па, има нов јазик наречен Свифт,
но ние нема да се користење дека во овој семинар.
Ако сте заинтересирани во Свифт, таму е независна семинар за тоа.
Но, Цел C е во основа супермножество на C. Значење
дека она што се користи во Ц може да да бидат преведени на Цел C
многу лесно.
>> Како што можете да видите подоцна, дека навистина постојат некои многу основни синтакса, се
во основа иста, Цел C и C. Значи,
бидејќи сте ги направиле CS50 до овој далеку, што веќе
знаете Цел Ц, најмалку 40%.
Исто така, Apple има навистина робустен API за iOS.
Постојат многу навистина лудо работи што можете да направите со него.
Еден од нив е некој всушност се создаваат на IOS стан
за контрола на автомобили, кои е прилично интересен.
Веројатно еден хеликоптер е повеќе интересен.
Но, тоа е како моќен на iOS API, може да биде.
>> И како може да се сфатиле токму сега,
магацинот претекување е веројатно една од најважните онлајн ресурси
достапни за вас.
И добрата вест, за секој еден проблем може да можеби
мислам на, додека зградата вашите финалниот проект во Цел C,
постои веројатност магацинот претекување одговор.
Тоа е само страшни.
Во прилог на тоа, iOS е навистина платформа
каде што може да се постигне голем публиката со малку напор.
Тоа не е како Андроид, каде сè е прилично фрагментирана.
>> Се 'iOS е обединета.
И додека се создаде еден стан за iPhone,
можете многу лесно можат да се префрлат дека на iPad, Мини iPad, iPhone или различни големини.
Овие се навистина удобен.
И тоа е само навистина добра за импресионира вашите пријатели.
Вие само може да се одржи на iPhone и кажете му на вашиот пријател еј,
ова е стан можам да направам.
Можете да го направи тоа за секој десктоп апликации, што е убаво.
>> Добро, сега ајде да всушност се на јазикот Цел В.
Па зошто да не почнеме со некои навистина основната синтакса.
Како што споменав пред Цел С Тоа е во основа супермножество од В.
Толку многу на основната синтакса се всушност токму истото.
За прогласување на променлива и додавање на две променливи заедно
е токму онака како што сме го направиле во Марио.
Ништо ново тука.
>> Слично на ова, потстанар за телефонска линија и состојбата е иста.
Можете да направите за телефонска линија исто како што го направи тоа на Марио [нечујни].
И можете да го направите услови исто како и она што
се прави во вашите претходни стр комплети.
Сепак, Цел C не е целосно C,
и таму е нешто што е вид на чуден за тоа.
>> Првиот е во тоа што кога ќе се прават C програмскиот, обично го нарекуваме
вклучуваат и потоа библиотека име.
Но, во Цел C ти се јавам дека увозот.
Во основа велејќи функционалност, само различни имиња.
И стрингови се всушност малку чудно.
Можете да видите дека првиот Она што е вид на чудни
е дека ќе има доста weird-- sorry-- имаш доста чудно Н.С.
потпише овде.
И втората работа тоа е вид на чудни
се имате во знак пред всушност прогласување на стрингот.
Значи го знакот во основа значи дека стрингот не е само низа,
тоа е всушност еден објект.
Ние сме случува да се објасни кои подоцна па не
паника ако не се разбере што значи тоа.
И печатење на конзола е малку различни, бидејќи во C ние го нарекуваме printf,
но Цел C ние го нарекуваме [нечујни].
>> Може да се прашуваат што е тоа.
Тоа е во основа printf, само на различен јазик.
Токму истото употреба, иста функционалност.
Добро, тоа излегува дека Цел C, всушност,
има Ns префикс во речиси сè, секој основен тип на податоци,
nsstring, nsarray, nsdictionary.
Причината е во тоа што Ns всушност стои за следниот чекор,
кој е компанија која Стив Џобс е основана,
која е фирма која Цел јазик C е роден.
Значи ова е во основа традиција.
Знам дека е малку чудно, но тоа е на Apple.
>> Значи, она што е уште почуден од тоа е функција декларација.
Ова е многу различно од она што го види во C, бидејќи тука, всушност,
не изгледа како C повеќе.
Што ви here-- има од страна на Начинот на кој ова не е куршум точка,
ова е минус.
Имате минус заграда празнина, а потоа името на функцијата.
Да речеме, ако ние имаат здраво светот, тогаш
тип на враќање ќе биде неважечки бидејќи ние се врати ништо.
>> Што добива навистина чудно е дека кога сте
кои имаат повеќе од еден параметар поминува во иста функција која
ќе биде навистина чудно како што е прикажано тука.
Имаме метод име, наречен addInt на [нечујни]
и ние сме поминува еден параметар.
Но после тоа, ние имаме повеќе метод име разговор со.
И после со што го поминува вториот параметар.
Ова е, всушност, малку чудно, Но, сите овие функција декларации
ја следи истата шема како ова.
>> Ние имаме минус од самиот почеток.
Знакот минус би можело да биде знак плус понекогаш врз основа на она што вид на метод
е тоа.
Метод е во основа друго име за функцијата.
И ние си оди за да објасни дека подоцна, кога
ние зборуваме за објектот ориентираното програмирање.
Вие прво наведете враќање напишете во загради,
по што доаѓа името на методот.
Ти си поминува еден параметар.
И ако имате повеќе параметри што треба да се прошири на име на метод
и во основа да се напише нешто повеќе тука.
>> Тоа може да биде нешто што сакате.
Во нашиот случај тоа е со.
Но, може да се каже крај, или или, или ABC целосна бар, она што го сакате.
А потоа по што сте поминува параметар б.
Ова е навистина чудно Конвенцијата, но ние сме
случува да се види зошто Apple сакаше да го стори тоа многу брзо.
Па како да ти се јавам функција?
Повикувајќи функција во цел Ц е исто така различен од В.
>> Всушност, нарекувајќи функција во Цел C
е повеќе како си зборува со некого.
Тука сме јас, кое се нарекува објектот.
Ти си во основа кажува противат само да се каже "Здраво Светот!"
Тоа е како да се јавите на функција.
Предмет и метод име во комбинација со едни со други.
И ова е местото каде што на чуден продолжување метод за името навистина стапува на сцена.
>> Ајде да погледнеме во вториот пример.
Ние само се дефинирани метод наречен addInt со бла бла бла.
Значи во овој случај кога се јавувате таа специфична [? порака?] тоа се случува
за да изгледа како само addInt: 10 со: 2.
Тоа звучи како англиски јазик.
Иако функцијата функција декларација е чудно,
точка на Цел на C метод декларација шема,
е дека кога ќе се јавувате функција или метод
ќе звучи како вистински англиски јазик.
Така, тоа е многу интуитивен штом ќе се влезе во неа.
>> Особено во овој случај, каде што можете да во основа
види дека името на функцијата е вид на самата документирање.
Вие не се потребни никакви повеќе објаснување за да ја видите
што точно се случува, она што точно еден параметар прави.
Одење надвор од тоа, ајде да разговараме малку малку за објектно ориентирано програмирање.
Објектно ориентирано програмирање е еден од основните програмски
техники и модели што е користи од страна на В. Цел Цел C
се нарекува Цел C, а не Ц, за навистина добра причина.
>> Значи пред да се влезе во Цел C синтакса,
Ајде навистина брзо се погледне што точно е објект.
Ние веројатно направи нешто како објект пред, за кое
се нарекува struct кога сте спроведување на дрво или поврзано листа
или [? се обиде. ?] Значи, тоа е во основа како struct,
но тоа е многу помоќен од тоа.
Објектот има методи и својства.
Методи се во основа функции.
Во суштина функции кои еден специфични за одреден објект.
>> И својства се во основа поле ќе се определи во struct.
Значи за секој објект ние имаме некои имот
што има некои променливи кои се специфични за објектот.
И ние имаме некои функции кои Исто така, постојат специфични за објектот.
И функции се нарекуваат методи и променливи, се нарекуваат својства.
Тоа е само фенси име.
Додека вие всушност, секој поглед додека ја отвори IOS стан,
да речеме Твитер или Фејсбук, секој поглед го гледате е објектот.
Па дури и целиот стан е објект за да се започне со.
Многу интересен концепт.
>> И зошто сакаме објектот ориентираното програмирање?
Значи можете да си замислите дека кога ќе програма се добива прилично комплицирано.
Да речеме, кога сте спроведување на шаховска табла,
логиката се случува да да биде навистина комплицирано.
Имаш 36 различни парчиња, така што ако
сакате да напишете логика за сите 36 различни парчиња во шах,
кој се случува да биде многу различни функции и променливи.
Тоа е многу проблеми.
И веројатно сте ќе треба да се напише различен метод или различна функција
за секоја од парче да точно го контролираат она што тие го прават.
>> Но, ако го направите објектно ориентирано програмирање, сите овие парчиња
можат да бидат апстрахирани во еден објект.
И објектот ќе имаат некои заеднички својства, како и она што вид на парче
е тоа?
Која боја е тоа?
Како тоа може да се движи?
И на тој начин, имате голема мера поедноставен логиката на тоа.
Така, тоа е само еден навистина добар начин да се направи комплицирани програми,
и хиерархиска врска во рамките на програмата, многу едноставно.
Како што ќе видиме зошто многу брзо кога
ние сме всушност прават programming-- кога сме всушност
водење на С код програмирање сесија.
>> Па во прилог на тоа, објектно ориентирано програмирање
е само еден многу забавно.
Имаш да дизајнирате сопствен објект.
Имаш да се дизајнира она што го прави тоа изгледа како од себе.
Не постои вистински одговор на тоа.
И тоа е сосема интересно.
Значи во објектно ориентирано програмирање, две фундаментални концепти
ќе биде класа и пример.
А класа е во основа дефиниција за објектот.
И пример е во основа еден специфичен објект.
>> Да речеме сте правење колаче.
Во овој случај, секој колаче што всушност се заокружи со
се случува да биде предмет.
Но колаче плоча го користите да се пече сите колачиња ќе бидат класа.
А класа е во основа на дефиниција.
И на пример, ќе биде една специфична објект создаден од таа класа.
>> И пример ќе биде создадена врз основа на класа декларација,
како што ќе видиме подоцна слајдови.
Значи, да всушност се направи навистина брз пример [нечујни].
Да речеме дека ние сме прогласување објект за една мачка.
Објектот треба да have-- класа мачка треба
има некои својства и методи.
Каков вид на имот треба да го класа have-- мачката треба да имаат?
>> На пример, бојата на кожата, возраст и раса, оние
ќе бидат променливи кои се специфични за секоја мачка.
И оние кои се некои работи дека ние ги користиме за да се опише мачка.
Каков вид на метод, или она што може да се мачка направам?
Со неколку брзи примери ќе биде потера глувчето, јадете риба или само meow.
Ова е навистина брзо пример на мачка класа.
И навистина специфични мачка објектот ќе биде мачка
каде што ние наведете боја, возраста и раса.
>> Во тој случај, нашата цел е повеќе не е класа повеќе.
Ние го копирате образец од класа и ние наведете секој конкретни информации
на конкретни објект да се направи независно.
И кога ќе се јавувате метод во внатрешноста на објектот,
можете да се јавите meow на објектот, која е мачка што сте го креирале.
>> Веројатно ќе испечатите нешто како "Здраво Светот!
Meow. "
Прилично симпатична.
Добро, ајде да добие во некои детали
и да видиме што точно значи дека се претвори во iOS програмирање.
Значи во iOS програмирање секој класа ќе се спроведува во две датотеки.
Еден датотеката е тука, што се нарекува интерфејс.
Уште една датотека е тука, што се нарекува имплементација.
>> Обично интерфејс ќе мора extension.h
како што видовме во C библиотеки.
И имплементација на датотеката е ќе мора extension.n.
Тоа е вид на чудно.
Но .n значи .c всушност, не постои Основната разлика помеѓу оние
две.
Значи во овој случај, можеме да видиме дека ние сме прогласување интерфејс, Кат: објект.
Тоа се нарекува наследство.
Ние сме во основа наследување мачка класа од класата на објектот.
Така што секој имот и метод кој беше претходно дефинирани во класата на објектот
автоматски ќе бидат дефинирани во мачка класа, како и.
>> Во прилог на тоа, ние се дефинира боја, раса, и возраст, три променливи.
Тоа всушност изгледа како нешто што сум го правел.
Тоа изгледа како struct.
Тоа е во основа на синтаксата за struct декларација,
и тоа е сосема точно.
И бидејќи веќе напоменав претходно, разликата на struct
и објект, еден од фундаментални разлики
е тоа што објектот има метод, додека struct има само променливи.
Значи во прилог на имот или променливи ние сме создадени за објектот,
ние наведете некои метод.
>> Да речеме, тука имаме два начини, еден е meow,
уште еден е потера глувчето.
Ние веројатно ќе сакате да се поминува на параметар врз основа на претходниот метод
декларација шема.
Веројатно сакате да биде донесување на глувчето.
И можеби ќе сакате да се врати bool означување
ако вашата мачка има успешно фатени на глувчето или не.
>> Ова е интерфејс, но можеме да види дека интерфејс, всушност,
не прават ништо.
Тоа само кажува програма што exists-- она што постои во мачка класа.
Значи, со цел за програма да се направи нешто,
ние треба да имаат имплементација датотеки.
Па еве, првото нешто што го правиме е очигледно ние увоз на интерфејс.
По ние увоз на интерфејс, ние се дефинира метод.
>> Да речеме тука meow само ќе испечатите
"Здраво Светот!" до конзола.
И по спроведување датотека, ние сме доста направено.
Ова е во основа една класа декларација за една класа.
Па сега прашањето е, како да се прогласи променлива?
Начинот на кој ќе се користи класа да се создаде објект во целта C е напишано тука.
>> Прво се каже дека ова е мачка покажувач,
бидејќи секој објект во целта C конечно спроведување како покажувач.
И ќе се јавите на класа, ги нарекуваат како alloc, кој во основа е Примерок,
кажува на оперативниот систем што го треба некои мемориски простор за овој објект.
По што ќе имам објект веќе и вие само да го иницијализирам.
Ова е само конвенцијата.
Знам дека е малку чудно, но ова е всушност начинот на кој Епл го прави нешта.
>> Доделување имоти се всушност прилично јасна.
Тоа е многу слична на она што го правиш кога
ти си доделување некои специфични поле внатрешноста на struct.
Вие само треба променливата име, име на имотот,
и додели одредена вредност на него.
И повикување метод е многу сличен.
Свикување метод е во основа она што се зборува за
за повикување на кој било начин во Цел В.
>> Ти си поминува некој објект, во овој случај тоа се случува да биде myCat,
а ти си поминува името на методот.
Како што ако зборуваме на објектот, myCat, дека треба да meow.
Тоа е прилично интересен.
После тоа, постои една посуштински дизајн шема
дека ние треба да се зборува за пред да дојдеме до вистинските С код.
Тоа дизајн шема се нарекува настан управувано програмирање.
Ова е, исто така, веројатно една од најпознатите основните идеи во iOS програмирање.
>> Значи, вие веројатно не знаете што точно е настан управувано програмирање,
но тоа не е навистина толку страшно.
Па, всушност, ќе мора веќе го направиле тоа порано.
Ова е една од линиите сте веројатно пишувавме во минатиот [нечујни]
на CS50, google.maps.event.addListener (маркер,
"Клик", функција () {}) :.
Со повикување на оваа линија ќе се во суштина кажува на компјутерот
дека секогаш кога настан кој се вика "Кликнете" се случува на маркер,
ја користат таа функција.
>> Ова е многу различно од она што го правите во mario.c.
Во mario.c само ја стартувате програмата еднаш, тоа ви дава излез,
и ќе завршиш.
Тие се вид на како еден истрел програми.
Настан управувано програми се многу, многу различно.
Ајде да си замислите, ако Фејсбук е еден истрел програма тоа не е навистина добра.
Вие само одете на Фејсбук еднаш и тоа е направено.
Тоа ви дава некои излез и никогаш не сте го доби назад.
Вие никогаш не добив ништо повеќе.
>> Па еве, особено моделот се користи, е
настан управувано, така што секоја функција ќе
да бидат фатени врз основа на она што Настанот се случи.
На пример, ако се има копче и ние наведете
дека секогаш кога тоа е кликнато на копчето, јавете се во функција наречена "Здраво Светот!"
На тој начин навистина може да управување со функција логика
проток во високо флексибилен начин.
Корисникот може да го направи или јавете се на функција кој веќе бил повикан.
Тоа е целосно врз основа на она што корисниците го прават.
>> Значи, можеме да видиме дека ова е всушност, многу подобро отколку mario.c.
И добрата вест е дека тоа е всушност не е нов концепт.
Вие момци имаат веќе направено дека во последните проблем во собата.
Значи, со цел С постојат три различни дијаграми
за настан управувано програмирање.
Првиот е дијаграмот наречен целна акција,
каде што ќе се поврзе со копчето печат со некои функција.
Да речеме, секогаш кога ќе кликнете некои копчето, ќе се јавите на некоја функција.
Ова е многу едноставна цел акција.
>> Вториот е всушност најтешките еден,
што се вика на делегацијата протокол.
Ние сме случува да се објасни кои во голема детали подоцна.
И третиот начин е известување.
Ова всушност не многу важно колку
што ние сме загрижени, бидејќи шансата кои ви се случува да се користи за известување
во твојот последен проект е прилично ниско.
Значи ние си оди за да го прескокнете тој дел.
>> И ние си оди за да се нурне во делегацијата на протоколот.
Значи, што точно е протокол?
Или, што точно е делегацијата?
Ајде да зборуваме за протоколот за да се започне со.
Протоколите се ништо друго туку настани.
Но, овие настани се дадени на што од страна на Apple да се започне со.
На пример, јас не сум сосема сигурен колку од вас
момци користете оригинални Епл стан пошта или контакт,
но секој пат кога ќе дојдете на маса и притиснете на одредена ќелија
на маса, која е настан.
>> И ако сакате да се направи тој настан од себе,
тоа е всушност малку тешко.
Значи, Apple има дадено дека дури и да ви така што ќе може директно да ги користат само
случај да се направи нешто за своја.
Протоколите се, всушност, навистина, навистина широко се користи
во В. Цел Па во Всушност, секој стан
има нешто фатени стан делегат.
Во внатрешноста на деликатни е на сите протоколи за вчитување на стан.
>> Да речеме постои настан за стан го товарот.
Значи она што треба да се случи откако ќе го создаде еден стан, откако ќе ја отворите апликацијата,
кога ќе ја затворите стан, или по ќе се стави на вашиот iPhone да спијам.
Овие се сите настани што има веќе се дадени за вас.
И првично во внатрешноста на овие честички нема да има примена.
Епл само ти реков дека оваа функција ќе се случи кога некој настан се случува,
но она што го правиш со таа функција е целосно зависи од вас.
>> Делегацијата е во основа кажува класа
што треба да се справи со овие протоколи.
Тоа е малку збунувачки, но тоа ќе биде
многу појасно кога ќе се направи Полиса на кодови во акција.
Делегација на протоколот е, всушност, високо робустен механизам во смисла
дека ако правиме делегација за одредена класа,
ние во суштина може да се справи со сите видови на настани
користење на било која класа што го имаме, многу удобен инструмент.
>> Значи еден брз пример за Делегација на протокол
ќе биде она што Јас само зборуваше.
Овој протокол конкретно се нарекува tableview [нечујни] одберете улога
во [? индекс?] [? минатото. ?] Значи ова е настан кој ќе биде фатен, кога ќе
всушност се приклучи на одредена клетка во вашето tableview,
да речеме во вашата пошта или во вашите контакти стан.
>> Во функција имаше првично се прави ништо.
Функцијата не направи нешто по дифолт.
Но, можете да наведете во која функција го прави,
со оглед на она што го сакате од вашиот стан.
Многу удобен инструмент.
И со сето она што се рече, јас во основа
покријат некои многу основни синтаксата и Фундаменталниот концепт за Цел C
програмирање, и можеме да направиме некои Полиса код.
Повозбудлива.
Така е кодот е всушност малку преголема
кога ќе го отворите за прв пат.
>> Еден брз нота, па ако сакате да го направите iOS развој,
Силно препорачувам да имате Mac.
Бидејќи прави iOS развој на Windows е навистина, навистина тешко.
Тоа е остварливо, но тоа е навистина тешко.
И ти дефинитивно не не сакате да го користите g уреди.
Значи во ОК код имаме неколку различни области.
Кога за прв пат се отвори Полиса код ќе видите навигација област,
што во основа ви покажува сите додадени фајлови: дека е во вашата тековна работа.
>> Имате алатникот област, која во основа е управување со ставови,
или некои малку брзо алатки за е кодот себе.
И ова е вистински уредник област.
Оваа област е многу слична g уреди, но многу подобро отколку g уреди.
И во ова право површина, е наречен Нови област.
Областа станува навистина корисна кога сте создавање интерфејс или специфицирање
некои брзи поставување за вашиот стан.
>> И конечниот област е дебагирање.
Овој дел ги содржи конзола.
Значи секогаш кога ќе се каже printf, или nslog во нашиот случај,
сите вашите резултати се ќе треба да се печатат тука.
Сите права?
Претпоставувам дека можеме да се направи навистина брзо пример за iOS програмирање.
И ајде да всушност се отвори Полиса код.
Така што секој пат кога ќе се отвори на кодот, тоа е да се појави нешто слично.
Тоа се случува да ве прашам Што сакате да направите?
Дали сакате да започнете нешто по случаен избор, игралиште, во основа ти
само може да го тестира код без всушност извршување на било стан.
>> Дали сакате да креирате нов проект?
Или пак сакате да продолжите работа на постоечкиот проект?
Во нашиот случај ние ќе за да креирате нов проект.
Така, тоа е навистина убаво, S кодот всушност има веќе
ви даде некои шаблони за креирање на објекти.
Ако сакате да се направи игра, е код всушност има играта дефиниција за вас,
има страница базирани апликации, таб-базирана апликација.
Во овој случај, ние ќе да се направи нешто многу едноставно,
и ние сме случува да се користи еден поглед апликација.
>> После тоа само она што сакате да го повикате вашиот производ, и она што е вашето име,
она што е вашиот идентификатор, и кој јазик ќе се користи.
Тука ние не сакаме да проверете користење на основни податоци.
Основни податоци е основа на databasing iOS.
Ако го направите основни податоци, е кодот ќе се дефинираат
многу покомплицирана часови за вас.
Значи, да се задржи сето едноставна, ние сме само се случува да се направи без основни податоци
во моментов.
>> Проблемот што се случува да биде користење е that-- проблемот
ние си оди за да биде создавање е дека ние во основа сакаат да увезуваат Марио од C
на IOS стан.
Значи, да се јавите дека Марио-iOS.
Се разбира дека, наведете го она што сакате да се стави во вашиот проект.
И таму ќе одиме.
>> Значи ова е малку огромна, но ова е всушност
она што го видоа на слајдови.
И првата област ги гледаме во моментов во основа е проект конфигурација.
Значи се што сакате да го направите Проектот, каков вид на уред,
да речеме она што вид на уред Дали сакате вашиот стан да се појави?
Дали iPhone, iPad или универзална?
Значи уред ориентација, сето тоа работи.
Не е многу важно, но може да биде, но тоа
е место каде што ќе се постави Вашиот проект ако навистина
сакаат да се распоредат во продавница на Apple.
>> Добро, ајде да погледнеме нешто што е во нашиот код.
Ајде да одиме преку датотеката навигатор.
И овие се сите датотеки кои веќе дојде со дефиниција, многу убаво.
Значи, кога ќе кликнете на еден од нив тоа е она што изгледа како.
Многу слична на г уреди.
Но, можете да видите дека означување на синтаксата е веројатно
малку поубаво.
И тоа е всушност многу повеќе помоќни од г уредување.
И вие може автоматски да заврши многу работи за вас,
како што ќе видиме многу брзо.
>> Ајде да се отвори дебагирање област, како и.
Сите во право, како што можеме да видиме, конзолата е во право тука.
Тоа е она што ви се случува да се види каде сте во printf или nsloging нешто.
Значи без понатамошно ado, ајде да се, всушност, собере на стан и да видиме што се случува.
Една клучна карактеристика за ОК код, е тоа што е кодот
доаѓа со iPhone симулатор.
Значи, вие не треба да имаат iPhone за да се обиде својата проектот,
ОК код може да се симулира дека за Вие, како може да се види во моментов.
>> Тоа е прилично убаво.
Тоа е преземање на малку малку време за да ги собере
и во основа имаме празен апликација,
кои всушност не прави ништо.
Но, тоа компајлира.
Тоа е прилично неверојатна.
Тоа е многу подобро отколку Ц, нели?
Сите во право, тогаш ајде обидете се да додадете нешто.
Еден датотеката која е малку чудно тука се нарекува сценариото.
Ова всушност е еден голем, страшни карактеристика за с код.
Бидејќи во с код, всушност можете да влечете и да го испуштите елементи врз интерфејс
и тоа директно ќе се појави.
Ајде да се обидеме тоа.
>> Ние капка етикета тука "Здраво Светот !!!"
Ние можеме да центрирате тоа.
Прилично кул.
Сега ајде да ја извршите оваа станица симулација.
Тука имаме "Здраво !!!"
Ние дури и не се направи било кодирање уште.
Што е грижам се случува?
Ова е како моќен Интерфејс градител може да биде.
Некој дури и изјави дека веројатно може да се само
заврши на стан без писмо веројатно илјада линии на код
само со користење на интерфејс градител.
Но, тоа е веројатно не најдобар начин да го стори тоа.
>> Сега ајде да се, всушност, се фаќате за кодирање.
Значи структура за датотеката е всушност навистина интересно
затоа што, како што може да видите, постојат не е главната функција насекаде.
Види?
Како што споменавме порано, може да се види дека ова
е датотека за имплементација за одредена класа.
Но, не постои главна насекаде.
Значи, каде што е главен?
Всушност, таму е главната, но Главните е, всушност, скриени од вас.
Главните е тука.
Тоа изгледа познато.
>> Значи, во основа она што iOS прави во главниот
е дека секогаш кога е главната вика, кој во основа е
секогаш кога стан е погубен, со него создава објект наречен AppDelegate.
Како што споменавме порано, целиот стан е всушност предмет по себе.
Така на овој начин, во основа на IOS стан кажува компајлер
дека во ред, јас ќе одам да се создаде производ наречен AppDelegate,
и тоа ќе биде мојот стан.
Значи треба да се оди преку кои AppDelegate
и да видиме што тој и тој прави.
Мојата работа е направено за мене.
>> И во AppDelegate можете да видите дека постојат некои навистина чудни функции,
и всушност методи, кои Apple веќе ти даде.
Што се овие?
Ова се всушност само протоколи што зборувам.
Значи овие се настани што Apple ти даде да се започне со.
Нема ништо во некои на функциите во моментов,
но ако сакаме да се иницијализира нешто за нашиот стан
пред да влезат прикажување секој поглед, тоа го правиме тука.
>> Вие само може да го прочитате името и претпоставувам настанот е всушност навистина јасно.
Така, сега главниот создаде објект за AppDelegate.
И што AppDelegate се случува да се направи е, всушност, исто така, сокриени од вас.
На AppDelegate се случува да започне вчитувањето на акции ViewController.
Така, тоа е во основа се случува да се започне товарењето сите погледи дека имате
и само да ја даде на гледање врз основа на хиерархијата.
>> Значи во овој случај имаме само еден поглед, кој е тука.
Па тоа е само поглед што се случува да се нарече.
На ViewController логика е во право тука.
Ова е кодот, кој, всушност, го контролира поглед кој го видоа.
Добро, ајде да направиме нешто тука.
Значи viewDidLoad звучи како некој настан, кога, всушност, ова е, исто така, пратеник,
ова е, исто така, на друг протокол.
>> Значи она што погледот е натоварен, Сè што во внатрешноста на функцијата
ќе бидат повикани.
Во овој случај ќе треба да се види "Здраво Tianyu! "Ако ние ја стартувате програмата.
Тоа е добивање малку бавен составувањето на сценариото датотеки.
Па навистина, гледам излез за тоа.
Тоа е прилично кул.
Сега ајде да всушност прават Марио.
Одам да се дефинираат функционира многу брзо.
marioWithLevels: (int) ниво резултати.
>> Добро, ова е всушност одличен карактеристика е кодот авто проектот.
Па кога ќе пишувам за и напишете го внесете, што веќе се откажал од дефиниција
за вас, што е прилично кул.
Тоа би требало да изгледа навистина запознаени за вас момци.
За жал, тоа е моја вина.
Добро, кул.
Таа логика би требало да изгледа навистина познато да ви момци, особено само Марио.
>> Но, ние сега ќе печати до конзола секој пат,
затоа што ние сакаме некако да се задржи ги пратите на она што се печатење.
Ние сме случува да се користи резултира некако подоцна,
за да се прикаже печатење надвор да доведе до корисникот.
Така, наместо ние сме само nslogging сè,
кои ние сме чување на сето она во повик на функција резултат на тоа,
но логиката е иста.
Откако се тоа, ние заврши само печати нашите резултати.
>> И тука, наместо на печатење мојот име, ние ќе треба да се јавите на функција.
Ајде да видиме што се случува.
Упс, очигледно.
Ние имаме убав малку пирамида од тука.
Ова е во основа C, ние сме само манипулирање, каде што ќе се јавите на функција
и како функција изгледа.
Нема ништо различно.
Но, ова е, всушност, не многу возбудливо тука,
бидејќи ние не гледате ништо од iPhone стан.
>> Значи, ако навистина имаат iPhone app-- ако навистина имаат Марио iOS право
Сега, вие не си оди да се види нешто што
има нешто да се прави со Марио, бидејќи сите оние резултати во конзола
се скриени од корисникот.
Ова е она што го гледате, која е "Здраво Светот !!!"
Не е добра.
Сега ајде да се обидеме да се направи на корисникот видите што точно сме печатење.
Значи ние не треба да се означат повеќе.
Ајде да се обиде да дознаам нешто друго што може да биде корисно.
>> Таму е, всушност една елемент кој се нарекува
текстуално поле, што би можело да да биде многу корисна за нас.
Тоа во основа се прикажува во регионот од текст кој може да се уредува.
Така што изгледа навистина корисни.
Сега ајде да го повлечете и да го испуштите.
Леле, ние имаме текстот изглед Според наше мислење, навистина фенси.
Тоа е малку преголема.
Ајде да ја направи помала.
Ставете го во центар.
Да ја направи помала, како и.
>> Сега имаме текст поглед, што ги се користи за приказ на нашата конечниот резултат.
Но, во моментов тоа е дефинитивно не оди на работа
бидејќи постои no-- на ViewController ние само
дефинирани не знае дека постои текст поглед таму.
Значи ние треба да некако линк текстот поглед ние само
создадени со класата која веќе дојде со нас.
>> Начинот на кој го правиме е всушност навистина магично.
Значи се отвори сценариото.
Постои посебна [нечујни] наречен [? асистент?] [нечујни].
Кога ќе кликнете на тоа, тоа е ќе се отвори уште две датотеки.
Еден е класа, а другиот е соодветна поглед за тоа.
Тоа е многу, многу корисни.
И ајде да оди преку .h датотека.
Контрола, ова е [нечујни] логика.
Прес контрола и повлечете текст поглед во декларацијата.
Ние ќе се јавите дека outputView.
Поврзете се.
Значи тука имаме прогласи нови имот за нашите ViewController класа.
И новиот имот е само текстот изглед
ние сме создадени во зградата интерфејс.
Така, на тој начин што можевме пристап на сите податоци
и манипулираат со сето она што е внатре на излез поглед, што е неверојатна.
>> Значи, во нашиот вистински код, ајде да се направи нешто со неа.
Значи ова време кога ние сме како печатење од конечниот резултат за Марио,
ние сме во не влезете ништо.
Мислам ние може да се задржи логирање изјава.
Во прилог на тоа, испрати на отчитување ние само
создадени за излез гледиште кое е адаптери textview ние само замислен.
Сега да видиме што се случува.
Леле.
Имаме пирамида во стан во моментов.
>> Значи, корисникот може да видите нашите излез, бидејќи ние се копирани на излез од нашиот код
за нашите интерфејс.
Тоа е прилично добар.
Тоа е всушност не дека возбудлив, бидејќи ние can--
Сите стан го прави е покажуваат пирамида за вас,
и нема ништо што можете да направите во врска со тоа.
Тоа не е особено возбудливо.
Па сега ајде да се направи копче Тоа ќе му го погледи.
Се чини дека само едно копче ќе бидат од корист.
Drag and drop.
Батон еден.
Батон две.
>> Значи, кога ќе кликнете на левото копчето, погледот треба да се расчисти.
Треба да има ништо на екранот.
И кога ќе кликнете на десното копче, Марио,
погледот ќе се појави повторно.
Така на овој начин ние, исто така, го направи магија работи, контрола и влечете
на класа декларација во асистент director--
во асистент гледачот.
Во овој случај ние се специфицирање дека тоа треба да биде акција.
clearMario.
>> Значи тука сме веќе имаш креирано акција наречена clearMario,
која е метод кој ќе се вика кога ние притиснете го копчето јасно.
Значи, во нашиот всушност код, ајде да стави на излез текст и излез поглед
во ништо, и на тој начин тоа ќе се појави за да биде јасно.
Во прилог на тоа, да се создаде друг метод наречен runMario.
Ох жал, тоа не треба да биде во сопственост.
Сите во право, дека треба да биде акција, како и.
>> И кога таа функција е вика, ние едноставно се кандидира Марио десет.
Се надеваме дека ќе биде во ред.
Дали тоа ги собере?
Да.
Сега имаме цел.
Имаме излез.
И ајде да видиме што се случува.
Тоа го нема.
Тоа е повторно назад.
Значи тука имаме одреден каков вид на функција
ќе се вика кога ние напишете нешто,
кога ќе притиснете на копчето специфични.
Ова е во основа целта акција шема
за настан управувано Цел програмирање во В.
>> Во прилог на тоа, тоа не е многу возбудливо
затоа што навистина не може да се промени колку високо на пирамидата ќе биде,
па веројатно ќе сакате да се некако добие влез од корисникот
и промена на висината на пирамида врз основа на она што тие излез.
Така ние ќе го направи тоа.
Значи ова време кога ние го нарекуваме runMario, ние не само повик Марио директно.
Наслов ова ми е.
>> Делегат.
Ова е многу интересно.
Што е делегат?
Одам да се стави само тука.
И ние си оди за да се види што значи тоа подоцна.
Значи тука имаме основа е замислен специфичен пример се нарекува адаптери алармирање
поглед.
А адаптери алармирање поглед е во основа она што ќе
види секој пат кога нешто се појавува и ве прашува за влез,
како што ќе се случи кога ќе се обидуваш да купите нешто на еден стан продавница.
>> Во прилог на тоа, откако ќе се создаде тоа, ние само се покаже на алармирање.
Добро, ајде да брзо тест кој ќе работи или не.
Тоа е многу кул.
Сега ајде да всушност се создаде поле за внес за адаптери алармирање.
Ова е како да го направи тоа.
И ние треба да имаат влез поглед за алармирање.
Многу кул.
Да речеме 10.
>> Тоа не е ништо во право сега, бидејќи повикот всушност
не се промени за извршување на Марио.
Значи ова стана малку малку чудно, бидејќи секогаш кога
ние притиснете само едно копче надолу, секогаш кога притиснете копче во поглед на алармирање,
нешто треба да се случи, но тоа не се случи.
Како да се фати тоа?
Како да знаеме дека ако еден корисник ја отфрли поглед на алармирање
и веќе влезе во број, бидејќи во моментов ништо не е навистина се случува.
>> Добро, вие може да се претпостави тоа право, делегација.
Значи во прилог на сите овие декларации,
ние треба да додадете нова делегација го нарече адаптери алармирање поглед делегат.
Така што секој интеракција или настан
дека ние ќе треба да имаат со адаптери алармирање поглед
се случува да се ракува од страна на нашата класа, како и.
>> Така, во прилог на тоа, ќе биде алармирање поглед кликнете на копчето на индекс.
Ова е достигнат.
Значи во тој случај имаме already-- така што мораме
дознав дека протоколот ќе се справи со случај кога
ние кликнете на копчето Признаена од приказот на алармирање.
Значи, секој пат кога ние го разреши алармирање, ова треба да се случи.
Дозволете ми да го пробате многу брзо.
Па навистина, сме постигнале тука.
>> Па еве, Она што нема да всушност е, всушност,
добие the-- Значи, сакаме да се излезе текстот што го имаме претходно
внесуваат во поглед на алармирање.
И врз основа на текстот, ние сме ќе се прикаже Марио.
Ова многу брзо Излегува ако тоа всушност функционира или не.
Значи во тој случај, ако ние влез, да речеме, 10, треба да се види 10.
>> Многу добро, ние имаме голем број тука.
Тоа е прилично добар.
Сега последниот чекор ќе be-- Значи Последниот чекор што треба да направите во моментов
е само повик Марио со ниво врз основа на внесување
дека ние се стави во поглед на алармирање.
Значи ние треба да го претворите овој стринг во iOS.
Статични overflow е многу страшно.
И тогаш ние само се јавите себе marioWithLevels вредност.
Ајде да видиме што ќе всушност работат или не.
>> Ние сме веќе со оглед на пирамида.
Да се ​​обидеме да ја менува висината.
Тоа всушност се работи.
Тоа е прилично кул.
Така што сега може да се само внесување на било која вредност што го сакате.
Да речеме четири.
Тоа е прилично неверојатна.
Значи ова е во основа навистина брз пример
за тоа како да се создаде проект во ОК код и како да се навистина брзо жица до
некои навистина едноставни настани и функции.
>> Значи изворот се случува да се стави онлајн подоцна.
Значи, ако сте заинтересирани во тоа како iOS Марио работи,
Одам да се стави токму на истиот проекти со излез на веб страница CS50 подоцна.
Ние сме во основа се направи со лето, и пред да заврши
Јас само сакам да ви точка момци да некои навистина страшни ресурси кои
се достапни онлајн.
>> Очигледно на Apple документација се случува да биде многу корисна.
Но, во прилог на тоа, јас особено препорачуваме четири извори, кодот училиште,
дрво куќа, AppCoda и WWDC видео клипови.
Код училиште и дрво куќа се две онлајн Едукација веб-сајтови,
што посебно ќе се фокусира на софтверското инженерство.
Особено за код училиште, имаат навистина добри туториал за iOS.
>> Тоа е навистина брз пример за тоа.
Тие всушност се создаде навистина cute-- гледам дека мала симпатична iPhone
Еј таму, тоа е прилично неверојатна.
И начинот на кој тие се објасни Цел C синтакса е совршено јасно.
Дрво куќа е иста.
И AppCoda е форум.
Тоа е всушност блог, кој ја водеше со навистина искусни Цел C
програмер.
И сите тие упатства во AppCoda се прилично краток и лесно да се спроведе,
високо препорачливо.
>> И ако сте програмер, дефинитивно оди провери
како WWDC видеа каде што можете да се запознаат со најновите iOS програмирање
техники, API и библиотеки.
Па тоа е доста тоа за семинарот.
Ви благодарам многу.
И се надевам дека ќе се забавувате создавање на свој IOS стан.