Tianyu ЛІУ: Гей, як це відбувається все? І це IOS App програмування Objective C семінарі. І мене звуть Tianyu Лю. Я молодший Лоуелл прямо зараз, концентруючись в галузі комп'ютерних наук. Так що в цьому семінарі я буду вчити вас, хлопці Трохи про те, як зробити додаток. Ура, захопитися для нього. Тому, перш ніж навіть почати плавання у фактичній стороні програмування, давайте просто дуже швидко говорити про Тому, можливо, ви хочете створити додаток IOS? Чому IOS настільки дивним? Таким чином, першою проблемою, в першу чергу річ, яка є досить дивним для нас, особливо в CS50 студент, є те, що IOS використовує Objective C. Ну, є Нова мова називається Свіфт, але ми не збираємося використовувати, що в цьому семінарі. Якщо ви зацікавлені в Swift, є є незалежним семінар про це. Але Objective C, в основному розширений Ч. Значення що всі ви використовуєте в C може бути переведені на Objective-C дуже легко. Як ви можете бачити пізніше, що, дійсно, Є деякі дуже базовий синтаксис, є основному точно так само, C і Objective C. Таким чином, так як ви зробили CS50 до цього місця, то вже знати, Objective C, щонайменше, 40%. Крім того, Apple, має дуже надійний API для IOS. Є багато дійсно божевільний речі, які ви можете робити з ним. Один з яких є той, насправді створив додаток IOS для контролю автомобілів, які це досить цікаво. Напевно, вертоліт більш захоплюючим. Але це, як потужний API IOS може бути. І, як ви, можливо, доведеться вважав, прямо зараз, переповнення стека, ймовірно, один з найбільш важливі інтернет-ресурси доступні для вас. І хороша новина для кожного однієї проблеми, можливо, ви можете думати про при будівництві вашого Остаточний проект в Objective-C, існує ймовірність переповнення стека відповідь. Це просто приголомшливо. На додаток до цього, IOS дійсно платформа де ви можете дістатися до величезна Глядачі з невеликим зусиллям. Це не те, Android, де все досить фрагментований. Всі IOS єдина. І до тих пір, як ви створюєте Додаток для iPhone, ви можете дуже легко переносити, що Ipad, Ipad міні, або різні розміри iPhone. Це все дуже зручно. І це просто дуже добре для враження на своїх друзів. Ви можете просто провести iphone і скажіть вашого друга агов, це програма, яка я зробити. Ви можете зробити, що для будь-якого настільні додатки, що приємно. Гаразд, тепер давайте насправді отримати у мовній Objective C. Так чому б нам не почати з деякі дійсно основний синтаксис. Як я вже говорив Мета C Це в основному розширеним С. Так багато основного синтаксису насправді точно так само. Оголошення змінної і додавши дві змінні разом саме так, як ми зробили в Маріо. Нічого нового тут. Точно так само, мешканець цикл і умова також і те ж. Ви можете зробити цикл так само, як вас вже зробив в Маріо [нерозбірливо]. І ви можете зробити умови так само, як те, що ви робили в ваших попередніх наборів р. Тим не менш, Objective C неповністю C, і є те, що трохи дивно про це. Перший в тому, що коли ви робити програмування на мові С, ви, як правило, називають включають в себе, а потім ім'я бібліотеки. Але в Objective-C Ви називаєте це імпорт. В основному говорять функціональність, просто різні назви. І струни насправді трохи дивно. Ви можете бачити, що перша річ, яка трохи дивно є те, що у вас є досить weird-- sorry-- у вас є досить дивні NS увійдіть сюди. І друга річ, це трохи дивно це ви повинні в знак перед насправді оголосити рядок. Так в знак основному означає що рядок не тільки рядок, це насправді об'єкт. Ми збираємося пояснити, що пізніше, так що не паніка, якщо ви не зрозуміти, що це означає. І печатка на консолі трохи відрізняється тим, що в C ми називаємо Printf, але в Objective-C ми називаємо [нерозбірливо]. Ви можете бути здивовані, що є що. Це в основному Printf, просто іншу мову. Точно так само, використання, точно ті ж функції. Ну і виходить, що Objective C насправді Має нс префікс майже все, кожен базовий тип даних, NSString, NSArray, NSDictionary. Причина в тому, що нс насправді позначає наступний крок, що компанія, яка Стів Джобс заснував, що компанія, в якій мова Objective C народжується. Так що це в основному традицією. Я знаю, що це трохи дивно, але це Apple. Так щось, що навіть дивніше ніж це оголошення функції. Це дуже відрізняється від того, що ми см в Сі, так ось це насправді не схожий С більше. Те, що ви here-- по спосіб це не кулі, це мінус. У вас є знак мінус дужки недійсними, а потім ім'я функції. Давайте просто скажемо, якщо ми є привіт світ, то Тип повертається б недійсними бо ми не повертають нічого. Що стає дійсно дивно є те, що, коли ви мають більше одного параметра переходячи в одній і тій же функції, що буде дуже дивно, як показано тут. У нас є ім'я методу, називається addInt на [нерозбірливо] і ми передаємо один параметр. Але після цього, у нас є більше ім'я виклик методу с. А після с, що ми передаємо Другий параметр. Це насправді трохи дивно, але всі ці оголошення функцій за тією ж схемою, як це. У нас є знак мінус, щоб почати с. Знак мінус може бути знак плюс іноді на основі того, який метод це. Метод в основному інша назва для функції. І ми збираємося пояснити, що пізніше, коли ми говоримо про об'єкт орієнтоване програмування. Спочатку вкажіть повернення введіть в дужках, після чого приходить ім'я методу. Ви передаєте один параметр. І якщо у вас є кілька параметрів, вам необхідно розширити назву методу і в основному щось написати більше тут. Це може бути все, що завгодно. У нашому випадку це с. Але можна сказати, що кінець, або, або, або ABC повний бар, все, що ви хочете. А потім після цього ви Передача параметрів б. Це дійсно дивно Конвенція, але ми побачите, чому Apple, хотів зробити це дуже швидко. Отже, як ви викликати функцію? Виклик функції в Objective С також відрізняється від C. Насправді, називаючи функція в Objective-C більше, як ви говорите комусь. Тут ми маємо себе, що називається об'єктом. Ви в основному говорить об'єкт сам, щоб сказати "Hello World!" Тобто, як викликати функцію. Об'єкт і ім'я методу в поєднанні один з одним. І це, де дивний розширення для назви методу дійсно вступає в гру. Давайте подивимося на другий приклад. Ми тільки що визначили метод, званий addInt з бла-бла-бла. Таким чином, в цьому випадку, коли Ви телефонуєте що конкретна [? повідомлення?] це буде щоб виглядати самостійної addInt: 10 с: 2. Схоже, англійською мовою. Хоча функції Оголошення функції дивно, точка Objective C років Оголошення методу узор, є те, що, коли ви телефонуєте функція або метод це буде звучати як фактичним англійською мовою. Так що це дуже інтуїтивним як тільки ви отримаєте в неї. Особливо в цьому випадку, де ви можете в основному бачити, що ім'я функції Сортувати документування себе. Ви не маєте потребу ні в більше пояснень, щоб побачити що саме відбувається, що точно один параметр робить. Виходячи за рамки, що, давайте поговоримо трохи Трохи про об'єктно-орієнтованого програмування. Об'єктно-орієнтоване програмування один з фундаментального програмування методи або моделі, які є використовується Objective C. Objective-C називається Objective C, що не C для дійсно гарною причини. Тому, перш ніж потрапити в Мета синтаксис C, Давайте дійсно швидко поглянути на що саме є об'єктом. Ми, ймовірно, зробили щось як об'єкт раніше, що називається структура, коли ви знаходитесь реалізації дерево або пов'язаний список або [? спробувати. ?] Таким чином, це в основному, як структури, але це набагато більш потужний, ніж це. Об'єкт має властивості і методи. Методи основному функції. В основному функції, які специфічні для певного об'єкта. І властивості в основному полі ви вказуєте в структури. Таким чином, для кожного об'єкта у нас є деяка властивість який має декілька змінних, які специфічні до об'єкта. І у нас є деякі функції, які також специфічні для об'єкта. І функції називаються методами і змінні називаються властивостями. Це просто гарна назва. Поки ви Насправді, кожен вид Ви бачите, коли ви відкриваєте додаток IOS, давайте просто скажемо, Twitter або Facebook, кожен вид ви бачите об'єкт. І навіть весь додаток Об'єкт, щоб почати с. Дуже цікава концепція. І чому ми хочемо об'єкт орієнтоване програмування? Таким чином, ви можете собі уявити, що коли ви Програма він отримує досить складно. Давайте просто скажемо, коли ви реалізації шахову дошку, Логіка збирається бути дуже складним. Ви повинні 36 різних штук, так що якщо ви хочу написати логіку для всіх 36 різних частин в шахи, що буде багато різні функції і змінні. Це багато неприємностей. І, напевно, ви збираєтеся написати інший спосіб або інша функція для кожного з частини, щоб точно контролювати те, що вони роблять. Але якщо ви робите об'єктно-орієнтованого Програмування, всі ці шматки можна абстрагувати в один об'єкт. І об'єкт буде мати деякі загальні властивості, як і які частини це? Якого вона кольору? Як він може рухатися? І в цьому випадку ви повинні в значній мірі спростити логіку його. Так що це просто дійсно хороший спосіб щоб зробити складні програми, і ієрархічна зв'язок в рамках програми, дуже просто. Як ми збираємося, щоб побачити Тому дуже швидко, коли ми насправді робимо programming--, коли ми насправді Ведення S код програмування пленарному засіданні. Добре в додаток до цього, об'єктно-орієнтоване програмування це просто весело. Ви повинні створити свій власний об'єкт. Ви повинні проектувати те, що робить це виглядає самостійно. Там немає правильної відповіді на нього. І це абсолютно цікаво. Таким чином, в об'єктно-орієнтованому програмуванні, два основних поняття буде клас і екземпляр. Клас в основному шаблон для об'єкта. І екземпляр в основному один конкретний об'єкт. Давайте просто скажемо, що ви робите печиво. У цьому випадку, кожен печиво ви насправді в кінцевому підсумку з буде об'єктом. Але печива плити ви використовуєте для випічки всі печиво буде клас. Клас в основному шаблон. І екземпляр буде один конкретний Об'єкт, створений з цього класу. І Примірник буде створений на основі декларації класу, як ми побачимо в наступних слайдах. Отже, давайте насправді дійсно Швидкий приклад [нерозбірливо]. Скажімо, ми оголошенні Об'єкт для кішки. Об'єкт повинен have-- клас кішка повинна мають деякі властивості і методи. Які властивості повинні в клас have-- повинні кіт є? Наприклад, колір, вік і порода, тих, буде змінні, які специфічні для кожної кішки. І ті речі, що ми використовуємо для опису кішку. Яким методом, або те, що може кішка робити? Деякі швидкі приклади будуть переслідувати миша, їдять рибу або просто нявкають. Це дуже швидко Приклад класу котячих. І дійсно специфічний кіт об'єкт буде кішка де ми вказуємо колір, вік і порода. У цьому випадку, наш об'єкт не більш класі не більше. Ми копіюємо шаблон з класу і ми вказуємо кожен конкретну інформацію до цього конкретного об'єкта щоб зробити його незалежним. І коли ви телефонуєте Спосіб всередині об'єкта, ви просто подзвоніть мяу на об'єкті, що кішка ви тільки що створили. Можливо, ви будете друкувати щось на зразок "Hello World! Мяу. " Досить мило. Гаразд, давайте просто потрапити в деяких деталях і подивитися, що саме це перевести на світ програмування IOS. Таким чином, в IOS програмування кожен клас буде здійснюватися в двох файлах. Один файл тут, який називається інтерфейс. Ще один файл тут, який називається реалізацію. Зазвичай інтерфейс матиме extension.h як ми бачили в C бібліотек. І файл реалізація матиме extension.n. Це трохи дивно. Але .n означає насправді .c, немає Фундаментальна відмінність між тими, два. Таким чином, в цьому випадку, ми можемо бачити, що ми заявивши, інтерфейс, Cat: об'єкт. Це називається спадкуванням. Ми в основному спадкування кіт-клас від класу об'єкта. Таким чином, кожен властивостей і методів, які були визначені раніше в класі об'єкта буде автоматично визначена в класі кішки, а також. На додаток до цього, ми визначаємо колір, порода і вік, три змінні. Це насправді виглядає те, що ви робили раніше. Схоже, структури. Тобто в принципі синтаксис для декларування структури, і що абсолютно правильно. А так як я вже згадував раніше, Різниця структура і об'єкт, один з фундаментальні відмінності в тому, що об'єкт має метод, в той час як структура має тільки змінні. Таким чином, на додаток до властивостей або змінні, які ми створили для об'єкта, ми вказуємо якийсь спосіб. Давайте просто скажемо, тут ми маємо два методи, один няв, ще один Чейз миші. Ми, ймовірно, хочете проходячи Параметр засновані на нашому попередньому методі Декларація малюнок. Ви, напевно, хочете бути проходження миші. І ви, напевно, хочете повернутися логічне значення, що означає, Якщо ваша кішка успішно зловив миша чи ні. Це інтерфейс, але ми можемо бачити, що інтерфейс насправді нічого не робити. Це просто говорить програму, що exists-- те, що існує в класі кішки. Так для того, щоб програма повинна робити щось, ми повинні мати файли реалізації. Так от, перше, що ми робимо, Очевидно, ми імпортуємо інтерфейс. Після ми імпортуємо інтерфейс, визначимо метод. Давайте просто скажемо, тут мяу буде просто роздрукувати "Привіт, Мир!" на консоль. І після реалізації Файл, ми дуже багато зробили. В основному це клас Заява для одного класу. Так що тепер питання стає, як ви оголошуєте змінну? Як ви використовуєте клас для створення об'єкт в Objective C, що тут написано. Ви спочатку вкажіть, Це покажчик кішки, бо кожен об'єкт в Objective C нарешті реалізовані як покажчик. І це ви називаєте клас, називати їх як Alloc, яка в основному Танос, говорить операційній системі, що ви потрібно частину пам'яті для цього об'єкта. Після цього у вас є об'єкт вже, і ви просто ініціалізувати його. Це просто умовність. Я знаю, що це є трохи дивним, але це насправді, як Apple, робить речі. Призначення властивостями, насправді досить проста. Це дуже схоже на Що ви робите, коли ви привласнюєте деякі конкретні поле всередині структури. Ви просто повинні змінну прізвище, ім'я властивості, і призначити конкретне значення до нього. І виклик методу дуже схожі. Виклик методу в основному те, що я кажу про для виклику будь-якого методу в Objective C. Ви передаєте об'єкт, в в цьому випадку він буде myCat, і ви передаєте ім'я методу. Як ніби ви розмовляєте з об'єкта, myCat, що ви повинні мяу. Це досить цікаво. Після цього, є один більш істотним шаблон що ми повинні говорити про перш ніж дістатися до фактичного S коду. Це шаблон називається подієва програмування. Це також, ймовірно, один з найбільш Основні ідеї в галузі програмування IOS. Таким чином, ви, ймовірно, не знаєте, що саме є подієва програмування, але це насправді не так страшно. Ну справді, у вас є вже зробили це раніше. Це одна з ліній ви, ймовірно, вже писав у минулому [нерозбірливо] з CS50, google.maps.event.addListener (маркер, "Клік", функцію () {}):. Називаючи цей рядок ви по суті говорять комп'ютер що всякий раз, коли називається подія "Натисніть" відбувається на маркер, використовувати цю функцію. Це дуже відрізняється від що ви робите в mario.c. У mario.c ви просто запустіть програму один раз, це дає вам вихід, і ви зробили. Це ніби як Один постріл програми. Керовані подіями програми дуже, дуже різні. Давайте уявимо, якщо Facebook це один постріл програма, це не дуже добре. Ви просто зайдіть на Facebook один раз, і це зроблено. Це дає вам якийсь вихід, і ви ніколи не отримав його назад. Ви ніколи не є що-небудь ще. Так от, в особливості шаблон ми використовуємо приводом подія, таким чином, що кожна функція буде бути спійманим на основі того, що подія вже відбулася. Наприклад, якщо у нас є Кнопка і ми вказуємо що всякий раз, коли кнопка натиснута, викликати функцію під назвою "Hello World!" Таким чином, ми можемо дійсно управляти логічної функції текти в дуже гнучко. Користувач може робити або викликати функцію який вже був викликаний. Це повністю засноване на тому, що дії користувачів. Отже, ми бачимо, що це насправді набагато краще, ніж mario.c. І гарною новиною є те, що це насправді не нова концепція. Ви, хлопці, вже зробили що в останнього завдання встановлений. Таким чином, в Objective-C є три різних схеми для події програмуванні. Перший діаграма називається цільової дію, де ви пов'язуєте кнопку прес з якоїсь функції. Давайте просто скажемо, всякий раз, коли ви натискаєте деякі кнопки, ви називаєте якусь функцію. Це дуже просто мета дії. Другий є насправді один з найважчих, це називається делегація за протоколом. Ми збираємося пояснити, що дуже докладно пізніше. І третій спосіб повідомлення. Насправді це не Дуже важливо, наскільки як ми зацікавлені, тому що випадково що ви збираєтеся використовувати повідомлення в остаточному проекті є досить низьким. Отже, ми збираємося, щоб пропустити цю частину. І ми збираємося пірнати в делегації по протоколу. Так що ж таке протокол? Або те, що саме делегація? Давайте поговоримо про протокол, щоб почати с. Протоколи не що інше, як події. Але ці події дані Ви Яблуком, щоб почати с. Наприклад, я не повністю впевнені, як багато хто з вас хлопці використовують оригінал від Apple Додаток поштою або зв'язатися з але кожен раз, коли ви прокрутіть стіл і натисніть конкретний осередок на стіл, тобто подія. А якщо ви хочете зробити ця подія самі, це насправді трохи важко. Так Яблуко, враховуючи, що навіть для вас так що ви можете просто використовувати безпосередньо Захід зробити щось на свій розсуд. Протоколи насправді дійсно, дійсно широко використовується в Objective C. Ну в Справа в тому, кожен додаток є щось зловив додаток делегата. Усередині тонка є все протоколи для завантаження програми. Давайте просто сказати, що є подія для програми зробив навантаження. Так що має статися після того, як створено програму, після відкриття програми, Після виходу з програми, або після Ви ставите iPhone спати. Це всі події, які має вже дано вам. І спочатку всередині цих частинок не буде ніякого здійснення. Apple, тільки що сказав вам, що ця функція відбудеться, коли відбувається якась подія, але те, що ви робите з цим функція повністю залежить від вас. Делегація в основному говорить клас що ви повинні обробляти ці протоколи. Це трохи збиває з пантелику, але це буде набагато ясніше, коли ми робимо Вибір S коди в дії. Делегація по протоколу насправді дуже потужний механізм, в тому сенсі, що якщо ми делегацію до певного класу, ми можемо істотно обробляти всі види подій за допомогою якого-небудь класу у нас є, дуже зручний інструмент. Так один швидкий приклад Делегація по протоколу буде те, що я тільки що говорив о. Цей протокол спеціально називається TableView [нерозбірливо] виберіть роль на [? Індекс?] [? минуле. ?] Так що це Подія, яка буде спійманий, коли ви насправді натисніть на конкретних клітина вашого Tableview, давайте просто скажемо, у вашій пошті або в Контакти. Усередині функції було Спочатку, нічого не роблячи. Не працює функція зробити що-небудь за замовчуванням. Але ви можете вказати що робить функція, враховуючи те, що ви хочете від вашого застосування. Дуже зручний інструмент. І при всьому тому, що При цьому, я в основному покриття деякі дуже базовий синтаксис і фундаментальне поняття для Objective-C програмування, і ми можемо зробити деякі и-код. Набагато цікавіше. Так з код насправді трохи переважною коли ви відкриваєте його в перший раз. Один швидкий записку, так що якщо ви хочу зробити розвиток IOS, Я настійно рекомендую вам є Mac. Оскільки при розробці IOS на Вікна, дійсно, дуже важко. Це здійснимо, але це дуже важко. І Ви, безумовно, не хочете використовувати г редагування. Таким чином, в и коду у нас є кілька різних областях. Коли ви вперше відкрити їй код Ви побачите навігаційну область, які в основному показує вам все файли, які знаходиться в поточному проекті. У вас є панель інструментів область, яка в основному управлінні погляди, або який-небудь швидкий Інструменти сінгапурських самого коду. І це фактична площа редактор. Ця область дуже схожий г редагувати, але набагато краще, ніж г редагування. І в цьому правій частині, є називається підсобне приміщення. Область стає дуже зручно, коли ви створюєте інтерфейс або вказівки деякі швидкі установки для вашої програми. І остання область є налагодження. Ця область містить консоль. Тому, коли ви говорите, Printf, або NSLog в нашому випадку, всі ваші результати друкуватиметься тут. Добре? Я думаю, ми можемо дуже швидко зробити Приклад для програмування IOS. І давайте насправді відкрити їй код. Таким чином, кожен раз, коли ви відкрити їй код, це збирається показати щось подібне. Це буде просити вас що ти хочеш робити? Ви хочете, щоб почати щось випадковим, дитячий майданчик, в основному ви може просто перевірити код без насправді прив'язки до будь-якої програми. Ви хочете, щоб створити новий проект? Або ви хочете, щоб продовжити працює на існуючому проекті? У нашому випадку ми збираємося щоб створити новий проект. Так що це дійсно хороша, з код насправді вже дав вам деякі шаблони для створення об'єктів. Якщо ви хочете зробити гру, код ˘S насправді є шаблон ігри для вас, є своя сторінка додатків, Вкладка додаток. У цьому випадку, ми збираємося зробити щось дуже просте, і ми збираємося використовувати один додаток думку. Після цього тільки те, що ви хочете зателефонувати ваш продукт, і як тебе звати, що ваш ідентифікатор, і якою мовою ви використовуєте. Тут ми не хочемо, щоб перевірити за допомогою основних даних. Основні дані в основному databasing IOS. Якщо ви основних даних, втор Код визначатиме набагато складніше, класи для вас. Таким чином, щоб зберегти все просто, ми просто хочу, щоб обійтися без основних даних прямо зараз. Проблема, яку ми збираємося бути використовуєте that-- проблеми ми збираємося створити те, що ми в основному хочуть імпортувати Маріо від C в додаток IOS. Так що давайте називати це Маріо IOS. Звичайно, ви вказуєте, що хочу поставити у вашому проекті. І там ми йдемо. Так що це трохи переважною, але це насправді те, що ми тільки що бачили на слайдах. І перша область, ми бачимо прямо зараз в основному конфігурація проекту. Так що всі ви хочете зробити Проект, який пристрій, давайте просто скажемо, що це за пристрій Ви хочете, щоб ваш додаток, щоб з'явитися на? Це iPhone, IPAD або універсальний? Так орієнтації пристрою, всі ці речі. Не дуже важливо, але може бути, але це це місце, де ви створили Ваш проект, якщо вам насправді необхідно розгорнути в магазин Apple. Гаразд, давайте подивимося на те, що знаходиться всередині нашого коду. Давайте пройдемося по файлової навігатора. І всі ці файли, які вже прийшов із шаблоном, дуже приємно. Тому, коли ми натисніть на одну з них це те, що він виглядає. Дуже схоже на г редагування. Але ви можете бачити, що підсвічування синтаксису, ймовірно, трохи приємніше. І це насправді набагато більш потужний, ніж г редагування. І ви можете автозаповнення багато речей для вас, як ми побачимо дуже швидко. Давайте відкриємо площа налагодження, а також. Гаразд, як ми бачимо, Консоль прямо тут. Це те, що ви будете бачити, де Ви знаходитесь в Printf або nsloging щось. Отже, без подальших церемоній, давайте насправді скомпілювати додаток і подивитися, що відбувається. Одним з найважливіших функція для з кодом, що з код поставляється з iPhone симуляторі. Таким чином, ви не повинні мати iPhone, щоб спробувати ваш проект, з код може імітувати, що для Ви, як ми бачимо, зараз. Це дуже приємно. Це займає небагато трохи часу, щоб скомпілювати і в основному ми маємо порожньо додаток, які насправді нічого не робить. Але він компілює. Це досить дивним. Це набагато краще, ніж С, а? Гаразд, тоді давайте спробуйте додати щось. Один файл, який трохи дивно тут називається розкадровка. Це насправді здорово, дивним функція для ов коду. Тому що в и коду, ви можете перетягнути і падіння елементи на інтерфейс і він буде безпосередньо показати. Давайте спробуємо це. Ми кидаємо мітку тут, "Hello World !!!" Ми можемо центрі, який. Досить прохолодно. Тепер давайте запустимо цю зупинку моделювання. Тут ми маємо "Hello World !!!" Ми навіть не робити будь-яких кодування ще. Що, чорт візьми, відбувається? Це, як потужний Interface Builder може бути. Хтось навіть сказав, що Ви можете, ймовірно, просто завершити додаток без написання ймовірно, в тисячу рядків коду тільки за допомогою Interface Builder. Але це, ймовірно, не Кращий спосіб зробити це. Тепер давайте насправді приступити до кодування. Таким чином, структури файлу насправді дуже цікаво тому що, як ви можете бачити, є немає Основна функція в будь-якому місці. Побачити? Як ми вже згадували раніше, Ви можете бачити, що це це файл реалізації для певного класу. Але немає основною в будь-якому місці. То де ж головний? Насправді, це основна, але Основний насправді приховані від вас. Головне, тут. Це виглядає знайомим. Тому в основному те, що IOS робить всередині основної є те, що всякий раз, коли головне, називається, який є в основному всякий раз, коли додаток виконується, він створює об'єкт, званий AppDelegate. Як я вже згадував раніше, вся Додаток насправді об'єкт сам по собі. Таким чином, в цьому випадку, в основному IOS додаток каже компілятор що добре, я збираюся створити Продукт під назвою AppDelegate, і що буде моє додаток. Таким чином, ви повинні піти через цей AppDelegate і подивитися, що хлопець робить. Моя робота для мене зробив. І в AppDelegate ви можете бачити, що є деякі дійсно дивні функції, а насправді методи, які Apple, вже дав вам. Що це? Це насправді всього протоколи що я мав на увазі. Таким чином, ці події, які Apple, дав вам почати с. Там немає нічого, деякі функцій прямо зараз, але якщо ми хочемо, щоб ініціалізувати щось для нашого застосування перш ніж потрапити у відображенні будь-який вид, що ми робимо це тут. Ви можете просто прочитати ім'я, і ​​я думаю, Подія насправді дуже ясно. Так що тепер головна створив об'єкт для AppDelegate. І те, що AppDelegate збирається зробити насправді також приховано від вас. AppDelegate збирається почати завантаження акції ViewController. Так що це в основному збирається почати завантаження всі види, які у вас є і просто зробити вигляд на основі ієрархії. Таким чином, в цьому випадку у нас є тільки один вид, який знаходиться тут. Так що це тільки вид який буде називатися. Логіка ViewController прямо тут. Це код, який насправді контролює зору ми тільки що бачили. Гаразд, давайте щось робити тут. Так viewDidLoad звучить як події, коли насправді це теж делегат, це також протокол. Тому, що б вид завантажується, Все всередині функції буде називатися. У цьому випадку ми повинні побачити "Hello Tianyu! "Якщо ми запустимо програму. Це стає трохи повільно складання розкадровки файлів. Ну справді, ми бачимо, вихід для нього. Це дуже здорово. Тепер давайте насправді Маріо. Я збираюся визначити працювати дуже швидко. marioWithLevels: результати (INT) рівні. Гаразд, це насправді здорово Особливістю років код авто завершення. Тому, коли ви пишете для і введіть увійти, він уже відмовився від шаблону для вас, який є досить прохолодно. Це має виглядати насправді знайомі з вами, хлопці. На жаль, це моя вина. Гаразд, круто. Ця логіка повинна виглядати дійсно знайомі з вами, хлопці, особливо відразу Маріо. Але ми зараз роздрукувати на Консоль кожен раз, тому що ми хочемо, щоб якось зберегти трек про те, що ми друкуємо. Ми збираємося використовувати Результати якось пізніше, для відображення друку з і для самого користувача. Так замість цього ми просто nslogging все, які ми зберігання всього, в результаті виклику функції, але логіка точно так само. Після того як ми закінчимо це, ми просто роздрукувати наші результати. І ось замість того, щоб роздрукувати мій ім'я, ми збираємося викликати функцію. Давайте подивимося, що відбувається. На жаль, це очевидно. У нас є хороший трохи піраміда тут. Це, в основному C, ми просто маніпулювання, де ви викликаєте функцію і як функція виглядати. Там немає нічого іншого. Але це насправді не дуже цікаво тут, бо ми не бачимо що-небудь з програми iPhone. Так що, якщо ви насправді є iPhone app-- Якщо у вас дійсно є право Маріо IOS Тепер, ви не збираєтеся щоб побачити все, що не має нічого спільного з Маріо, бо всі ці виходи в консолі приховані від користувача. Це те, що ви бачите, що "Hello World !!!" Недобре. Тепер давайте спробуємо зробити користувачеві бачити що саме ми роздруківки. Таким чином, ми не повинні маркувати більше. Давайте спробуємо з'ясувати, щось те, що може бути корисно. Існує насправді один елемент, який називається текстове поле, яка могла б бути дуже корисним для нас. Це в основному відображає область текст, який можна редагувати. Так що виглядає дійсно корисно. Тепер давайте перетягніть його і помістіть його. Нічого собі, у нас є текстовий вигляд на наш погляд, насправді фантазії. Це трохи занадто великий. Давайте зробимо це менше. Покладіть його в центр. Зробити менше, як добре. Тепер у нас є текстовий вигляд, який ми могли б бути використаний для відображення остаточний результат. Але зараз це безумовно, не буде працювати тому що є no-- ViewController ми просто визначено, не знаю, що є думка текст там. Так що ми повинні якимось чином зв'язати текстове представлення ми просто створений з використанням класу, що вже з нами. Як ми робимо це насправді дуже чарівний. Так відкрити розкадрування. Існує спеціальна [нерозбірливо] називається [? помічник?] [нерозбірливо]. При натисканні, що це збирається відкрити два файли. Один клас, а інший це вид, відповідний для нього. Це дуже, дуже корисно. І давайте просто йде через файл .h. Контроль, це [нерозбірливо] логіка. Натисніть Control і перетягніть Текст вид в декларації. Ми збираємося назвати це outputView. Підключіть. Так от ми оголосили новий нерухомість для нашого класу ViewController. І нову властивість це просто вид тексту ми створили в будівлі інтерфейсу. Так що в цьому, як ми могли б Доступ до всіх даних і маніпулювати все, що знаходиться всередині Подивитися вихід, який є дивним. Таким чином, в нашому фактичному коду, давайте щось робити з цим. Так що це час, коли ми, як друку з кінцевого результату для Маріо, ми знаходимося в не ввійшовши нічого. Я маю на увазі, ми могли тримати реєстрація заяві. На додаток до цього, ми відправити зчитування ми просто створено з метою виробництва, які є UI TextView ми тільки що створили. Тепер давайте подивимося, що відбувається. Ось Це Да. У нас є піраміда в додаток прямо зараз. Таким чином, користувач може побачити наш вихід, бо ми скопіювали вихід з нашого коду для нашого інтерфейсу. Це дуже добре. Це насправді не те, що цікаво, тому що ми can-- Всі додаток робить, показуючи піраміду з вами, і немає нічого, що ви можете з цим вдіяти. Це не особливо цікаво. Так що тепер давайте зробимо кнопку що буде ясно думки. Схоже, що кнопка буде корисно. Перетягніть і відпустіть. Одна кнопка. Кнопка два. Тому, коли ми натискаємо ліву Кнопка, вид повинен очистити. Там не повинно бути нічого на екрані. І коли ми натискаємо Права кнопка, Маріо, Подивитися буде з'являтися знову. Так що це, як ми також робимо магічних штучок, контроль і перетягніть в оголошенні класу в помічника director-- в помічника глядача. В даному випадку ми маємо вказівки що це має бути дію. clearMario. І ось ми вже створили акція під назвою clearMario, який є методом, який можна було б назвати всякий раз, коли ми натискаємо кнопку Очистити. Таким чином, в нашому насправді код, давайте просто Помістіть результат текст і вид вихідний в ніщо, і, таким чином це буде виглядати як ясно. На додаток до цього, давайте створимо інший метод, званий runMario. Ех шкода, що не повинно бути власності. Гаразд, що повинно бути дія, а також. І коли це функція називається, ми просто запустити Маріо десять. Сподіваюся, що все буде в порядку. Чи скомпілювати так? Так. Тепер у нас є уявлення. У нас є вихід. І давайте подивимося, що вийде. Це пішло. Він повернувся знову. І ось ми вказали які функції буде викликатися, коли ми вводимо в чомусь, коли ми натискаємо на певну кнопку. Це, в основному Схема дії цільової для керованих подіями, програмування в Objective C. На додаток до цього, це не дуже цікаво тому що ми не можемо змінити як високо піраміда буде, таким чином, ми, ймовірно, хочете, щоб якимось чином отримати введення від користувача і змінити висоту піраміда заснована на те, що вони вихід. Так що ми збираємося зробити це. Так що це час, коли ми називаємо runMario, ми не просто напряму подзвонити Маріо. Це свого назву. Делегат. Це дуже цікаво. Що таке делегат? Я збираюся поставити себе тут. І ми збираємося, щоб побачити що це означає пізніше. Так от у нас в основному створена Конкретний екземпляр називається попередження UI Гарний вигляд. Подивитися попередження користувача інтерфейс в основному те, що ви будете см кожен раз, коли щось тріск і запитує введення, Подобається те, що станеться, коли ви намагаєтеся купити щось на App Store. На додаток до цього, після того, як вам створити його, ми просто показати попередження. Гаразд, давайте просто швидко Тест буде, що робота чи ні. Це дуже здорово. Тепер давайте насправді створити Поле для введення напоготові користувача інтерфейсу. Це, як ми робимо це. І ми повинні мати вхід подання для напоготові. Дуже здорово. Давайте просто скажемо, 10. Це нічого не робить зараз, тому що виклик насправді не зраджувати для виконання Маріо. Так що це стало трохи трохи дивно, тому що всякий раз, коли тиснемо кнопку вниз, коли ми натисніть кнопку в оповіщення думку, щось має статися, але це не відбудеться. Як ми вловили? Як ми знаємо, що користувач звільнив з попередженням вид і вже ввели номер, тому що Прямо зараз нічого не відбувається насправді. Ну, ви вже здогадалися, це право, делегація. Таким чином, на додаток до всього Ці заяви, ми повинні додати нову делегацію це називається UI Alert Подивитися делегата. Так що кожен взаємодія або подія що ми матимемо з метою попередження UI оброблятиметься нашої професії. Таким чином, на додаток до цього, буде Кнопка перегляду Натисніть оповіщення за індексом. Це досягається. Так що в цьому випадку ми маємо already-- тому у нас є виявили протокол, який буде обробляти подія, коли ми натискаємо на кнопку Готово на оповіщення зору. Таким чином, кожен раз, коли ми звільнити попередження думку, це повинно було статися. Дозвольте мені перевірити його дуже швидко. Ну справді, ми досягли тут. Так от, те, що ми не будемо насправді отримати насправді отримати the-- Тому ми хочемо, щоб вийти Текст, який ми маємо раніше увійшов у попередженні зору. І на основі тексту, ми показуватимемо Маріо. Це дуже швидко виявляється якщо вона дійсно працює чи ні. Таким чином, в цьому випадку, якщо вхідний сигнал, скажімо, 10, то ми повинні побачити 10. Дуже добре, у нас є номер тут. Це дуже добре. Тепер останній крок буде be-- Так останній крок, який потрібно зробити прямо зараз, просто зателефонуйте Маріо з Рівень на основі даних, що ми вклали в оповіщення зору. Таким чином, ми повинні перетворити Цей рядок в IOS. Статичний переповнення дуже дивним. А потім ми просто називаємо себе Значення marioWithLevels. Давайте подивимося, чи буде це насправді працює чи ні. Ми вже дали піраміду. Давайте спробуємо змінити висоту. Це насправді працює. Це дуже здорово. Так що тепер ви можете просто Введіть будь-яке значення, яке ви хочете. Давайте просто скажемо, чотири. Це досить дивним. Так що це в основному дуже швидко приклад про те, як створити проект в и коду і як насправді швидко з'єднувати деякі дійсно прості події і функції. Таким чином, джерело буде щоб поставити онлайн пізніше. Так що, якщо ви зацікавлені в тому, як IOS Маріо працює, Я збираюся поставити точно такий же проекти на веб-сайті CS50 пізніше. Ми в основному робиться з влітку, і перш ніж ми закінчимо Я просто хочу, щоб вказати вам, хлопці, деякі дійсно дивовижні ресурси, які доступні в Інтернеті. Очевидно, документація Apple, буде дуже корисно. Але на додаток до цього, особливо мені рекомендувати чотири джерела, код шкільні, будинок дерево, AppCoda і WWDC відео. Код школа і будинок на дереві є два онлайн сайти Виховання, які призначені, в першу на розробці програмного забезпечення. Спеціально для коду школі, вони є дійсно хороший підручник з МО. Це дійсно простий приклад для цього. Вони насправді створити дійсно cute-- подивитися на цій маленькій милій iPhone чувак там, це досить дивним. І як вони пояснюють Мета Синтаксис C абсолютно ясно. Дерево Дім ж. І AppCoda є форум. Це насправді блог, який був запущений насправді відчував Objective C програміст. І всі ці підручники в AppCoda є досить короткий і простий в реалізації, Настійно рекомендується. І якщо ви розробник, виразно піти перевірити як відео WWDC, де ви можете дізнатися про останні програм IOS методи, API та бібліотеки. Так що це в значній мірі це за семінар. Спасибо большое. І я сподіваюся, що ви весело створити свій власний додаток IOS.