Tianyu LIU: Хей, как е тя ще всички? И това е IOS App програмиране на обективни в семинар. И моето име е Tianyu Liu. Аз съм Lowell младши точно сега, концентриране по компютърни науки. Така че в този семинар съм ще ти покажа момчета малко за това как да се направи един апартамент. Уау, се вълнувам за това. Така че, преди да започнем да говорим за гмуркане в действителната страна програмиране, нека просто наистина бързо се говори за Ето защо може да искате да се изгради IOS ап? Защо е IOS толкова страхотно? Така че първият проблем, първата нещо, което е доста страхотно за нас, особено като CS50 студент, е, че IOS приложения Цел C. Е, има нов език, наречен Swift, но ние няма да използвате, че в този семинар. Ако сте заинтересувани от Swift, има е независима семинар за това. Но Objective C е в общи линии надмножество на C. Значение че всичко, което се използва в C може да се преведе на Objective C много лесно. Както можете да видите по-късно, че наистина Има някои много основния синтаксис, са основно точно същото, C и Цел C. Така че, тъй като сте направили CS50 до този момент, вие вече знаете Objective C, най-малко 40%. Също така, Apple има наистина стабилна API за IOS. Има много наистина луд неща, които можете да правите с него. Един от които е някой, всъщност създаде IOS ап За управление на автомобили, които е доста интересно. Вероятно хеликоптер е по-вълнуващо. Но това е, колко мощен на API IOS може да бъде. И тъй като може да се наложи измисли точно сега, стека преливане е може би един от най-важните онлайн ресурси достъпни за вас. И една добра новина, за всеки единичен проблем, който няма как да създаде мисля, докато изграждането на вашия окончателен проект в Objective C, има вероятност комин препълване отговор. Това е просто страхотно. В допълнение към това, IOS е наистина платформа където можете да стигнете до огромен аудитория с малко усилия. Това не е като Android, където всичко е доста фрагментиран. Всичко IOS е единна. И толкова дълго, колкото можете да създадете ап за iPhone, Можете много лесно порт, който да IPAD, IPAD мини, или различни размери iPhone. Всички те са наистина удобно. И това е просто много добър за да впечатли приятелите си. Можете просто да притежават iPhone и кажете на приятеля си, хей, това е ап да направя. Можете да направите това за всеки десктоп приложенията, което е хубаво. Добре, сега нека да се получи в действителност на езика Цел В. Така че защо да не започнете с някои наистина основния синтаксис. Както споменах преди Цел C Това е основно надмножество на C. Така че много от основния синтаксис са всъщност точно същото. Декларирането на променливата и добавяне на две променливи заедно е точно така, както сме правили в Mario. Нищо ново тук. По същия начин, квартиранта за линия и състояние е същото. Можете да направите за линия, точно както са направили в Mario [недоловим]. И вие можете да направите условия точно както това, което са били прави в предишните ви р комплекти. Въпреки това, Objective C не е напълно С, и има нещо, което е вид странно за него. Първата от тях е, че когато сте правене C програмиране, вие обикновено наричаме включва и след библиотека име. Но в Objective C ти се обадя, че внос. По принцип казва функционалност, Просто различни имена. И конците са всъщност малко странно. Можете да видите, че първият нещо, което е вид странно е, че имате доста weird-- sorry-- имате доста странни NS влезте тук. И второто нещо, че е нещо странно е, че имате най знак преди всъщност обявяване на низа. Така че в знак основно означава че низ не е само низ, това е всъщност един обект. Ние ще обясним че по-късно, така че не паника, ако не го направите разбере какво означава това. И отпечатване на конзолата е малко по- различно, защото в C, което наричаме ФОРМАТ, но в Objective C, което наричаме [недоловим]. Може би се чудите какво е това. Това е в общи линии ФОРМАТ, Просто различен език. Точно същото използването, точно същата функционалност. Ами оказва се, че Цел C всъщност има НЧ представка почти всичко, всеки основен тип данни, nsstring, nsarray, nsdictionary. Причината е, че NS всъщност означава Next Step, която е компания, която Стив Джобс е създадена, която е компания, в която език Objective C е роден. Така че това е в общи линии традиция. Знам, че е малко по- странно, но това е Apple. Така че нещо, което е още по-странен от това е функцията декларация. Това е много различно от това, което ние виж в C, защото тук всъщност не изглежда като C вече. Какво ви here-- има от начин това не е начална точка, това е знак минус. Имате знак минус скоби нищожен и след това името на функцията. Нека просто кажем, ако ние Трябва Здравей, свят, тогава типа връщане би било нищожно защото ние се върне нищо. Какво става наистина странно е, че когато си които имат повече от един параметър преминаване в същата функция, която ще бъде наистина странно, както е показано тук. Имаме име на метод, наречено addInt да [недоловим] и ние сме минава един параметър. Но след това, ние имаме по име извикване на метод с. И след като ние сме с преминаване Вторият параметър. Това всъщност е малко странно, но всички тези декларации на функциите следват същия модел като този. Имаме знак минус, за да започнем с това. В знак минус може да е знак плюс понякога въз основа на какви метод е то. Метод е основно другото име на функция. И ние ще обясни, че по-късно, когато ние не говорим за обект ориентирано програмиране. Можете първо да посочи връщането напишете вътре скоби, след което идва името на метода. Ти си прехвърляха един параметър. И ако имате повече параметри което трябва да се разшири името на метода и в общи линии да напиша нещо повече тук. Тя може да бъде всичко, което искаш. В нашия случай това е с. Но може да се каже край, или, или, или ABC пълен бар, каквото си искате. И тогава, след това, че си б преминаване параметър. Това е наистина странно конвенция, но ние сме Ще видите защо Apple иска да направи това много бързо. Е, как да ти се обадя функция? Извикването на функциите в Цел С също е различно от С. Всъщност, наричайки функция в Objective C е по-скоро като си говорите с някого. Тук имаме самостоятелно, които се нарича обект. Вие сте в основата Разказвайки възразят самостоятелно да се каже "Hello World!" Ето как да извикате. Предмет и името метод комбинирани едни с други. И това е мястото, където странно разширение за името метод наистина влезе в игра. Нека да разгледаме втория пример. Ние току що описания метод, наречен addInt с бла бла бла. Така че в този случай, когато се обаждате тази специфична [? съобщение?], че ще ходи да изглежда като самостоятелно addInt: 10 с: 2. Това звучи като английски. Въпреки че функцията декларация функция е странно, точката на Objective C е метод модел декларация, е, че когато се обаждате функция или метод тя ще звучи като действителната английски. Така че е много интуитивен след като влязат в него. Особено в този случай, където можете основно виждаме, че името на функцията е сортиране на самата документиране. Вие не се нуждаят от повече обяснения, за да видите какво точно се случва, това, което точно един параметър прави. Извън това, нека да поговорим малко малко за обектно-ориентирано програмиране. Обектно-ориентирано програмиране е една от основните програмиране техники или модели, които е използвана от Цел C. Цел C се нарича Цел С, не C, за една наистина добра причина. Така че, преди да навлезем в Синтаксис Objective C, Нека наистина бързо погледнем какво точно е обект. Ние вероятно сте направили нещо като обект преди, които се нарича структура, когато сте прилагане на дърво или свързан списък или [? опитам. ?] Така че, това е основно като структура, но това е много по-мощен от това. Един обект има методи и свойства. Методи са основно функции. По принцип функционира че специфични за даден обект. И свойства са едни и поле, който задавате в структура. Така че за всеки един обект Ние имаме някои имот че има някои променливи, които са специфични за обекта. И ние имаме някои функции, които също са специфични за обекта. И функциите се наричат ​​методи и променливите са наречени свойства. Това е просто измислено име. Докато сте всъщност, всеки един изглед виждате, докато отворите IOS ап, нека просто кажем, Twitter или Facebook, всеки един изглед, което виждате е обект. И дори на целия ап е един обект да се започне с. Много интересна концепция. И защо искаме обект ориентирано програмиране? Така че можете да си представите, че когато програма става доста сложно. Нека просто кажем, когато сте прилагане на шахматна дъска, логиката ще бъде наистина сложно. Имате 36 различни парчета, така че ако сте искам да пиша логика за всички 36 различни парчета в шах, че ще бъде много различни функции и променливи. Това е много неприятности. И най-вероятно ще да напише различен метод или различна функция за всяка проба, за да точно контролира това, което правят. Но ако го направите обектно-ориентирано програмиране, всички тези парчета може да се абстрахира в един единствен обект. И на обекта ще има някаква обща свойства, като какъв вид парче е това? Какъв цвят е? Как може да се премести? И по този начин имате силно опростена логиката на него. Така че това е просто един наистина добър начин да направи сложни програми, и йерархична зависимост в рамките на програмата, много проста. Както ще видим Затова много бързо, когато ние всъщност правим programming-- когато сме всъщност правене на S код програмирането по-късно. Е, в допълнение към това, обектно-ориентирано програмиране е просто много забавно. Имаш ли да проектирате свой собствен обект. Вие трябва да се изработи какво прави тя изглежда като от себе си. Няма правилен отговор на него. И това е напълно интересно. Така че в обектно-ориентирано програмиране, две основни понятия ще бъде клас и модел. A клас е основно шаблон за обект. И една инстанция е основно един конкретен обект. Нека просто кажем, че го правите бисквитка. В този случай, всеки един бисквитка всъщност в крайна сметка с ще бъде обект. Но плоча бисквитка използвате да се пекат всички бисквитки ще бъдат клас. A клас е в основата на шаблон. И инстанция ще бъде една специфична обект, създаден от този клас. И ще бъде създадена една инстанция въз основа на декларация клас, както ще видим в следващите слайдове. Така че нека действително да направи една наистина бърз пример [недоловим]. Да кажем, че ние сме за обявяване обект за една котка. Обектът трябва have-- клас Котката трябва има някои свойства и методи. Какви качества трябва най- клас have-- трябва котката да има? Например, цвят, възраст и порода, тези, ще бъде променливи, които са специфични за всяка котка. И това са някои неща, които ние използваме, за да се опише една котка. Какъв метод, или това, което може да направи една котка? Някои бързи примера ще бъдат Чейс мишката, ядат риба или просто мяу. Това е наистина бързо Например на котка клас. И наистина специфична котка обект ще бъде една котка мястото, където задаваме цвят на кожата, възраст и порода. В този случай, нашата цел е вече един клас не повече. Ние копирате шаблона от класа и задаваме всяка конкретна информация към този конкретен обект че да бъде независим. И когато се обаждате метод в обект, вие просто се обадете мяу на обекта, която е котката току що сте създали. Вероятно ще отпечата нещо като "Hello World! Мяу. " Много сладко. Добре, нека просто получите в някои детайли и да видим какво точно означава, че превежда в съществуване IOS програмиране. Така че в IOS програмиране всеки един клас ще се реализира на два файла. Един файл е тук, които се нарича интерфейс. Друг файл е тук, които се нарича изпълнение. Обикновено интерфейса ще има extension.h както видяхме в C библиотеки. И файл изпълнение е Ще трябва extension.n. Това е нещо странно. Но .n означава всъщност .c, не съществува съществена разлика между тези, две. Така че в този случай, ние можем да видим, че сме обявяване интерфейс, Cat: обект. Това се нарича наследство. Ние основно наследи котка клас от класа на обекта. Така че всеки имот и метод, който е преди това е дефинирано в класа на обект автоматично ще бъде определена в котка клас, както добре. В допълнение към това, ние определяме цвят, порода и възраст, три променливи. Това всъщност прилича нещо, което сте направили преди. Тя изглежда като структура. Това е в основата на синтаксиса за обявяване структура, и това е напълно вярно. И тъй като споменах и преди, разликата на структура и обект, един от най- фундаментални разлики е, че обект е метод, докато структура има само променливи. Така в допълнение към свойствата или променливи, които сме създали за обекта, уточняваме някои метод. Нека просто кажем, че тук имаме два метода, един е мяу, Другото е преследване на мишката. Ние вероятно ще искате да се премине параметър на базата на предишната ни метод модел декларация. Може би искате да се премине на мишката. И най-вероятно ще искате за да се върнете на булев показваше Ако вашата котка е успешно хвана мишката или не. Това е интерфейсът, но ние можем да виж, че интерфейсът всъщност не направи нищо. Тя просто казва програма какво exists-- това, което съществува в класа на котка. Така че, за да може програма да се направи нещо, трябва да имаме файлове изпълнение. Така че тук, първото нещо, което правим, е Очевидно ние внасяме интерфейса. След внасяме интерфейса, ние определяме метода. Нека просто кажем, тук мяу Просто ще отпечата "Hello World!" към конзолата. И след прилагането файл, ние сме почти готови. Това е в основата на клас декларация за един клас. Така че сега възниква въпросът, как се декларира променлива? Начинът на използване на един клас да се създаде обект в Objective C е написано тук. Трябва първо да уточни, че това е една котка показалеца, защото всеки обект в Objective C накрая се прилага като указател. И ти се обадя класа, ги наричаме като Alloc, който е основно изчистване, казва операционната система, която нужда от памет за този обект. След това имате обект вече и просто го инициализира. Това е само допълнение. Знам, че е е малко странно, но това е всъщност как Apple прави неща. Възлагане на имоти се всъщност е доста прост. Това е много подобен на това, което правиш, когато ако присвоявате на някои специфични поле във вътрешността на структурата. Просто трябва променливата име, името на имот, и определи конкретна стойност към нея. И призова метод е много подобна. The извикване на метод Основно това, което аз говоря за за свикване всеки метод в Цел C. Вие предаване на обект, в този случай тя ще бъде myCat, и сте преминаване името на метода. Тъй като, ако говориш за обекта, myCat, че трябва да мяу. Това е доста интересно. След това, има едно по-съществено значение шарка че ние трябва да говорим за Преди да достигне реалното S код. Това шарка се нарича продиктувани от събитията програмиране. Това също е вероятно една от най- основните идеи в IOS програмиране. Така че най-вероятно не знаете какво точно е програмирането на ориентирана към събития, но това не е наистина, че страшно. Ами всъщност, имате вече е направено, че преди. Това е една от линиите вероятно сте вече написана през последната [недоловим] на CS50, google.maps.event.addListener (маркер, "Клик", функция () {}) :. Като се обадите на този ред сте същество казва компютъра че всеки път, когато събитието, наречено "Клик" се случва на маркера, използвате тази функция. Това е много по-различна от това, което правите в mario.c. В mario.c просто стартирате програмата веднъж, тя дава изход, и сте готови. Това са нещо като Един изстрел програми. Програми ориентирана към събития са много, много по-различна. Нека си представим, ако Facebook е една Ударът програма това не е наистина добра. Просто отидете на Facebook веднъж и това е направено. Тя ви дава някои изход и никога не ще го получиш обратно. Вие никога не получи нищо повече. Така че тук, особено схемите, които използваме е събитие задвижване, така че всяка функция ще да се хванат на базата на това, което събитие се е случило. Например, ако имаме бутон и уточняваме че всеки път, когато този бутон се натисне, извикаме функцията, наречена "Hello World!" По този начин ние можем наистина управлява логиката функция тече по много гъвкав начин. Потребителят може да направи или да се обадите на функция че вече е наречена. Той е изцяло на базата на това, което правят потребителите. Така че ние можем да видим, че това е всъщност е много по-добре, отколкото mario.c. А добрата новина е, че това е всъщност не е нова концепция. Вие, момчета, вече са го направили че в последния проблема определен. Така че в Цел C има три различни схеми за продиктувани от събитията програмиране. Първата схема е нарича действие за действие, където се свързват един бутон натиснете с някаква функция. Нека просто кажем, когато щракнете някои бутон, ти се обадя на някои функции. Това е много проста цел за действие. Вторият е всъщност е най-трудно, тя се нарича делегиране на протокол. Ние ще обясним че в големи подробности по-късно. И третият начин е уведомление. Това всъщност не е много важно, доколкото като Загрижени сме, защото шансът че ти започваш да се използва съобщение в окончателния си проект е доста ниска. Така че ние ще пропуснете тази част. И ние ще се потопите в делегация на протокол. И така, какво точно е протокол? Или какво точно е делегация? Нека поговорим за протокол за начало. Протоколите са нищо друго, освен събития. Но тези събития са дадени за ви от Apple да се започне с. Например, аз не съм напълно сигурен колко от вас момчета използват оригинален на Apple ап поща или контакт, но всеки път, когато превъртате маса и натиснете специфични клетъчни на масата, че е събитие. А ако искате да направите, това събитие от себе си, това е всъщност малко трудно. Така че Apple е дал, че дори и да сте така че можете директно да използвате случай да се направи нещо по своему. Протоколите са всъщност много, много широко използван в Цел C. Ами в Всъщност, всеки един ап има нещо привлече ап делегат. Вътре на деликатен е всичко на протоколи за зареждането на приложението. Нека просто кажем, че е събитие за ап направи натоварване. И така, какво трябва да се случи, след като сте създаден един апартамент, след като отворите приложението, след като затворите приложението, или след поставите iPhone да спи. Това са всички събития, които има вече са дадени за вас. И първоначално вътре в тези частици няма да има изпълнение. Apple току-що ви казах, че тази функция ще се случи, когато дадено събитие се случва, но това, което се прави с този функция е изцяло от вас. Делегация е основно казва класа че трябва да се справят с тези протоколи. Това е малко по- объркващо, но това ще бъде много по-ясно, когато правим кодовете на S в действие. Делегация на протокола е всъщност изключително стабилен механизъм, в смисъл, че ако правим делегация определен клас, същество можем да се справим всички видове събития използва всеки клас имаме, Много удобен инструмент. Така че един бърз пример за Делегация на протокол ще бъда това, което току-що говорихме. Този протокол изрично се нарича tableview [недоловим] изберете роля в [? индекс?] [? минало. ?] Така че това е събитие, което ще се хванат, когато всъщност натиснете специфичен клетка във вашето tableview, нека просто кажем, в пощата си или в контактите си ап. Inside функция е имало първоначално да не правиш нищо. Функцията не направя всичко по подразбиране. Но вие можете да определите каква е функцията прави, дава това, което искате от вашия ап. Много удобен инструмент. И с всички, които се каза, аз основно покриване на някои много основни синтаксис и основно понятие за Objective C програмиране, и ние можем да направим някои ите код. Много по-вълнуващо. Така че е код е всъщност малко поразителен когато го отворите за първи път. Една бърза бележка, така че ако искам да направя развитие IOS, Аз силно препоръчвам имате Mac. Поради това развитие IOS на Windows е много, много трудно. Това е постижимо, но това е наистина трудно. И определено живеете не искате да използвате ж редактиране. Така че в S код имаме няколко различни области. Когато за първи път се отворят и код ще видите навигационната зона, което по същество показва всички вас файлове, които са в сегашния си проект. Имате Toolbar площ, която груб управление възгледи, или някое малко бърз инструменти за S самия код. И това е действителната редактор района. Тази област е много подобна г редактиране, но много по-добре, отколкото г редактиране. И в това право област, е наречена областта на полезност. Районът става много удобен, когато създавате интерфейс или уточняване някои бързи настройки за приложението си. И крайната зона е отстраняване на грешки. Тази зона съдържа конзолата. Така че когато кажете ФОРМАТ, или nslog в нашия случай, всичките си резултати са Ще бъдат отпечатани тук. Разбра ли? Предполагам, че ние можем да направим много бързо пример за IOS програмиране. И нека действително се отворят и код. Така че всеки път, когато се отворят и код, това е Ще се появи нещо подобно. Това ще ви помоля Какво искате да направите? Искате ли да започнете нещо случайна, детска площадка, основната ви може просто да тестват кода без действително извършване на всяко приложение. Искате ли да създадете нов проект? Или искаш да продължи работи по съществуващия проект? В нашия случай отиваме за създаване на нов проект. Така че това е много хубаво, S Код всъщност има вече ви даде някои шаблони за създаване на обекти. Ако искате да направите една игра, S код всъщност има шаблон игра за вас, има страници базирани приложения, таб базирано приложение. В този случай, ние ще да се направи нещо много просто, и ние ще се използва едно заявление изглед. След това точно това, което искате да се обадите вашия продукт, и какво е вашето име, това, което е идентификатор си, и какъв език използват. Тук ние не искаме да проверите използване основни данни. Основни данни е в основата на databasing IOS. Ако го направите основни данни, S код ще определи много по-сложни упражнения за вас. Така че да се запази всичко прост, ние сме Просто ще може да разчита на основни данни точно сега. Проблемът отиваме да бъде използване е that-- проблема ние ще трябва да се създаде е, че ние основно искате да импортирате Марио от C до IOS ап. Така че нека да се обади, че Марио-IOS. Разбира се, че Посочете какво Искам да сложа във вашия проект. И там да отидем. Така че това е малко по- огромна, но това всъщност е това, което току-що видях в кадрите. И първата област, което виждаме в момента е в основата на конфигурацията на проекта. Така че всичко, което искате да направите, проект, какъв вид устройство, нека просто кажем какъв вид устройство искаш приложението ви да се появи? Дали е iPhone, IPAD или универсална? Така устройство за ориентация, всички тези неща. Не е много важно, но може да бъде, но този е място, където сте инсталирали Вашият проект, ако действително Искам да разположи до магазина Apple. Добре, нека да погледнем нещо, което е вътре в нашия код. Нека да мине през файл мореплавател. И това са всички файлове, които вече дойде с шаблона, много хубаво. Така че, когато щракнете върху един от тях това е това, което изглежда. Много подобна на г редактиране. Но можете да видите, че оцветяване на синтаксиса е вероятно малко по-хубав. И това е всъщност много по- мощен от редактиране ж. И вие можете автомобил пълен много неща за теб, както ще видим много бързо. Да отворим областта на отстраняване на грешки, както добре. Добре, както можем да видим, конзолата е точно тук. Това е това, което ще видите, когато вие сте в ФОРМАТ или nsloging нещо. Така че, без повече приказки, нека действително компилира приложението и да видим какво ще стане. Една от основните характеристики на S код, е, че е код идва с iPhone тренажор. Така че не е нужно да има iPhone да опитам вашия проект, S код може да симулира, че за вие, както можем да видим точно сега. Това е доста приятно. То е като малко малко време, за да съставят и в общи линии имаме празен заявление, което всъщност не прави нищо. Но той съставя. Страхотно е. Това е много по-добре, отколкото C, а? Добре, тогава нека опитам да добавя нещо. Един файл, който е малко по- странно тук се нарича сториборд. Това всъщност е голяма, страхотно функция за S код. Защото в S код, всъщност можете да влачите и пускате елементи върху интерфейса и то директно ще се появи. Нека се опитаме това. Пускаме етикет тук, "Hello World !!!" Ние можем да се съсредоточи, че. Много готино. Сега нека да стартирате тази спирка симулация. Тук имаме "Hello World !!!" Ние дори не е направил всяко кодиране, все още. Какво по дяволите става? Това е колко мощен Interface Builder може да бъде. Някой дори каза, че Вероятно можете да просто завършите един апартамент, без писмено Вероятно хиляди реда код само с помощта на Interface Builder. Но вероятно не е най-добрият начин да го направя. Сега нека да се получи в действителност до кодиране. Така че структурата за файла всъщност е много интересно защото, както можете да видите, има не е основна функция навсякъде. Вижте? Както споменахме по-горе, можете да видите, че това е файлов изпълнение за определен клас. Но няма основна навсякъде. Е, къде е основната? Всъщност, има главна, но Основната е всъщност скрито от вас. Главното е тук. Това изглежда познат. Така че основно това, което IOS се прави вътре основна е, че всеки път, когато основното е нарича, който е основно всеки път, когато приложението се изпълнява, тя създава обект, наречен AppDelegate. Както споменах преди, цялата приложение е всъщност един обект от само себе си. Така че по този начин, в общи линии IOS ап казва на компилатора че OK, аз отивам да се създаде един продукт, наречен AppDelegate, и че ще бъде моя ап. Така че ще трябва да отидете чрез които AppDelegate и да видим какво този човек прави. Моята работа е направил за мен. И в AppDelegate можете да видите, че има някои наистина странни функции, и всъщност методи, които Apple вече ви е дал. Какви са тези? Това са всъщност само протоколи че аз говорех за. Така че това са събития, които Apple ви е дал да се започне с. Няма нищо в някои от функциите точно сега, но ако искаме да се инициализира нещо за нашия ап преди да влезе показване всяко мнение, което правим, че тук. Можете просто да прочете името и предполагам случай е всъщност най-много ясна. Така че сега основното е създал обект за AppDelegate. И какво ще направи AppDelegate всъщност също е скрит от вас. The AppDelegate ще започне зареждане на фондовата ViewController. Така че това е основно ще започне зареждане всички виждания, които имате и що направи на мнение въз основа на йерархията. Така че в този случай имаме само една гледка, която е тук. Така, че е само изгледа че ще се обади. Логиката ViewController е точно тук. Това е кодът, който всъщност Контрол на мнение, ние просто видях. Добре, нека да направим нещо тук. Така viewDidLoad звучи като събитие, когато в действителност това е също един делегат, това е и протокол. Така че каквото и да се зарежда на мнение, Всичко във вътрешността на функцията ще се нарича. В този случай ние трябва да видим "Hello Tianyu! ", Ако можем да стартирате програмата. Става все по-малко бавен съставяне на сториборд файлове. Ами всъщност, ние виждаме изход за него. Това е много готино. Сега нека действително да направи Марио. Отивам да се дефинират функционира много бързо. marioWithLevels: резултати (INT) ниво. Добре, това е всъщност най-страхотно функция на S код автоматично завършване. Така че, когато пишете за и тип влиза, тя вече се е отказал от шаблона за вас, което е много готино. Това би трябвало да изглежда наистина познато на вас, момчета. За съжаление, това е по моя вина. Добре, хладно. Тази логика трябва да изглежда наистина запознат до вас, момчета, особено що Mario. Но ние сега ще разпечатате да конзолата всеки път, защото искаме по някакъв начин да се запази следите на това, което се печата. Отиваме да използва Резултати някак по-късно, за да се покаже печат посочени доведе до потребителя. Така че, вместо да сме просто nslogging всичко, които ние сме съхраняване всичко в резултат на извикване на функция, но логиката е точно същото. След като сме го, като приключим Просто отпечатате нашите резултати. И тук, вместо да отпечатате ми име, ние ще наричаме функция. Нека да видим какво ще стане. Ами сега, очевидно. Имаме хубава Малко пирамида тук. Това е в общи линии C, ние сме просто манипулиране, когато ти се обадя функция и как една функция да изглежда така. Няма нищо по-различно. Но това е действително Не много вълнуващо тук, защото ние не виждаме нищо от iPhone ап. Така че, ако наистина имате iPhone app-- ако действително има Mario IOS полето Сега, вие няма за да видите всичко, което има ли нещо общо с Марио, защото всички тези изходи в конзолата са скрити от потребителя. Това е това, което виждате, която е "Hello World !!!" Това не е добре. Сега нека се опитаме да направи потребителят виж какво точно сме отпечатване. Така че ние не трябва да се поставя етикет вече. Нека се опитам да разбера нещо друго, което може да бъде полезно. Налице е всъщност една елемент, който се нарича текстово поле, което би могло бъде много полезна за нас. По същество това показва регион на текст, който може да се редактира. Така че изглежда наистина полезно. Сега нека да го плъзнете и да го пуснете. Уау, ние имаме икони По наше мнение, наистина фантазия. Това е малко прекалено голям. Нека да намали големината. Сложете го в центъра. Направи го по-малко, както добре. Сега имаме икони, които бихме могли да да се използва за показване на крайния ни резултат. Но точно сега това е Определено не ходи на работа защото има no-- на ViewController ние просто определено не знае, че там е оглед на текста там. Така че ние трябва да по някакъв начин свържете мнението текст ние просто създаден с класа, че вече е дошъл при нас. Начинът, по който го правим, че е всъщност наистина вълшебно. Така се отвори сценария. Има специална [недоловим] наречен [? асистент?] [недоловим]. Когато кликнете върху това, че е Ще се отвори два файла. Един е клас, а другият е изглед, съответстващ на него. Това е много, много полезно. И нека просто минава през файла .h. Control, това е [недоловим] логика. Натиснете Control и плъзнете тексов в декларацията. Ще се обадя, че outputView. Свържете. Така че тук имаме обявена нова имот за нашия ViewController клас. И новата имота е само мнението на текст ние създадохме в сградата на интерфейс. Така че по този начин бихме могли да достъп на всички данни, и манипулират всичко, което е вътре Разглеждане на изхода, което е страхотно. Така че в реалните ни код, нека да направим нещо с него. Така че този път, когато ние сме като печат от крайния резултат за Mario, ние сме в не излиза нищо. Искам да кажа, ние може да се запази изложението сеч. В допълнение към това, ние изпрати разпечатката ние просто създаден, за да изгледа на продукцията, която е UI textview ние току-що създадената. Сега нека да видим какво ще стане. Wow. В момента има една пирамида в приложението в момента. Така потребителят може да види нашата продукция, защото ние сме копирали изхода от нашия код в нашия интерфейс. Това е доста добра. То всъщност не е, че вълнуващо, защото ние can-- All ап прави се показвайки пирамида, за да сте, и няма какво да направиш за него. Това не е особено вълнуващо. Така че сега нека да направим един бутон че ще изчисти мненията. Изглежда, че един бутон ще бъде от полза. Влачите и пускате. Button един. Button две. Така че, когато щракнете с левия бутон, че следва изчистите. Не трябва да има нищо на екрана. И когато ние щракнете върху бутона десния бутон, Mario, гледката ще се появи отново. Така че по този начин ние също правим на магия неща, контрол и плъзгане Декларацията на клас в асистент director-- в асистент зрителя. В този случай ние се уточнява че това трябва да бъде действие. clearMario. Така че тук вече сме създали иск нарича clearMario, която е метод, който ще се нарича Всеки път, когато натиснете бутона ясна. Така че в нашата действителност код, нека просто сложи изходния текст и гледката изход в нищо, и по този начин тя ще се появи, за да бъде ясно. В допълнение към това, нека да се създаде друг метод, наречен runMario. О съжалявам, че не трябва да бъде собственост. Добре, че трябва да е действие, както добре. И когато тази функция е нарича, ние просто стартирате Mario десет. Надяваме се, че ще се оправи. Има ли го компилирам? Да. Сега имаме цел. В момента има изход. И нека просто видим какво ще стане. Това го няма. Това е обратно. Така че тук сме обособили каква функция ще се нарича, когато ние напишете нещо, когато натиснете определен бутон. Това е в общи линии Схема за действие целевата за продиктувани от събитията програмиране в Цел C. В допълнение към това, това не е много вълнуващо защото не можем наистина да се промени колко висока ще е пирамидата, така че ние може би искате да по някакъв начин получите вход от потребителя и промяна на височината на пирамида на базата на това, което те изход. Така че ние ще направим това. Така че този път, когато ние наричаме runMario, Ние не просто се обадете директно Mario. Заглавието Това нечии. Делегат. Това е много интересно. Какво е делегат? Отивам да постави себе си тук. И ние ще видим това, което означава, че по-късно. Така че тук сме основно създал конкретен случай, наречен сигнал за UI изглед. Преглед на сигнал UI е Основно това, което искаш виж всеки път, когато нещо УОЗ и ви пита за вход, като това, което ще се случи, когато се опитвате да закупи нещо на магазин ап. В допълнение към това, след като той създаде, ние просто се покаже сигнала. Добре, нека просто бързо Изпитването, че работата или не. Това е много готино. Сега нека действително създаде поле за въвеждане на сигнала на UI. Ето как да го направим. И ние трябва да имат вход изглед за сигнала. Много готино. Нека просто кажем, 10. Той не прави нищо полето Сега, тъй като поканата действително не се променя за изпълнение Марио. Така че това е станало малко малко странно, защото всеки път, когато ние натиснете бутон надолу, когато ние натискане на бутон в сигнал гледката, нещо трябва да се случи, но това не се случи. Как да хванете, че? Откъде знаем, че потребител е отхвърлил сигнал оглед и вече въведен номер, защото в момента нищо не се е всъщност се случва. Е, може би се досещате Правилно ли, делегация. Така че в допълнение към всички тези декларации, ние трябва да се добави нова делегация в го нарича UI сигнал оглед делегат. Така че всеки един взаимодействие или събитие че ние ще имаме с изглед бдителния UI ще бъдат обработени от нашия клас, както добре. Така в допълнение към това, ще бъде Предупредителен бутон в преглед на индекса кликване. Това е постигнато. Така че в този случай имаме already-- така че ние имаме разбрах, протокол, който ще се справят случай, когато ние щракнете върху бутона Готово по сигнал гледката. Така че всеки път, когато отхвърли Предупредителен мнение това трябва да се случи. Нека само да го тествам много бързо. Ами всъщност, ние сме достигнали тук. Така че тук, това, което ние няма всъщност става дума всъщност получите the-- Така че ние искаме да се измъкнем текста, че имаме по-рано вписано в сигнал гледката. И въз основа на текст, ние сме Ще се покаже Mario. Това много бързо се оказва, ако тя наистина работи или не. Така че в този случай, ако ние вход, да речем, 10, ние трябва да видим 10. Много добър, ние имаме редица тук. Това е доста добра. Сега последната стъпка ще be-- така че Последният етап ние трябва да направим точно сега е само покана Mario с ниво на базата на входа че ние сме вложили в сигнал изглед. Така че ние трябва да конвертирате този низ в IOS. Статично препълване е много страшен. И тогава ние просто се обадете самостоятелно стойност marioWithLevels. Нека да видим воля действително работят или не. Ние вече даден на пирамида. Нека се опитаме да промените височината. Това наистина работи. Това е много готино. Така че сега можете да просто вход всяка стойност, която искате. Нека просто кажем, четири. Това е доста страхотно. Така че това е в общи линии наистина бърз пример за това как да се създаде проект в S код и как да се наистина бързо с връзването някои наистина прости мероприятия. Така че източникът се случва да бъдат пуснати онлайн-късно. Така че, ако проявявате интерес в това как работи IOS Mario, Отивам да се постави точно същото проекти към сайта на CS50-късно. Ние основно се направи с лято, и преди да завърша Аз просто искам да ви посоча момчета да някои наистина страхотни ресурси, които са достъпни онлайн. Очевидно документацията Apple ще бъде много полезно. Но в допълнение към това, аз вече Препоръчваме четири източника код училище, къща на дърво, AppCoda и WWDC видеоклипове. Код училище и къща на дърво са две онлайн сайтове образоване, които специално се фокусира на софтуерното инженерство. Специално за код на училище, те има наистина добър урок за IOS. Това е наистина бърз пример за това. Те всъщност се създаде наистина cute-- Посетете това малко сладко iPhone пич там, това е доста страхотно. И начина, по който да обясни Цел C синтаксис е напълно ясно. Tree House е един и същ. И AppCoda е форум. Това всъщност е блог, който се провежда от една наистина опит Цел C програмист. И всички тези уроци в AppCoda са доста кратка и лесна за изпълнение, Силно се препоръчва. И ако сте програмист, Определено отидете проверите как WWDC видеоклипове, където можете да се запознаят с най-новите програмиране IOS техники, APIs и библиотеки. Така, че е доста много тя по време на семинара. Благодаря ви много. И аз се надявам да се забавляват създаването на своя собствена IOS ап.