1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Семинар] [IOS: Писане на приложения като шеф] 2 00:00:02,000 --> 00:00:04,000 [Томи MacWilliam] [Харвардския университет] 3 00:00:04,000 --> 00:00:08,000 [Това е CS50. [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Добре, всички, добре дошли на IOS: Писане Apps като Boss. 5 00:00:12,000 --> 00:00:16,000 Този семинар ще се съсредоточи върху писането на приложения за iPhone 6 00:00:16,000 --> 00:00:19,000 и на свой ред писмено приложения за IPAD, така че ние сме основно ще ходим 7 00:00:19,000 --> 00:00:23,000 няколко различни примери за това как да се направи един апартамент, една проста игра като Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 или ако сте по-заинтересовани в един апартамент, като някакъв вид четец на новини 9 00:00:26,000 --> 00:00:30,000 или нещо, което взаимодейства с Интернет, аз ще говоря за това, както и. 10 00:00:30,000 --> 00:00:32,000 Ето нашата кратка програма. 11 00:00:32,000 --> 00:00:36,000 >> IOS приложения са написани на език, наречен Objective-C, 12 00:00:36,000 --> 00:00:39,000 и така че това е малко подобен на C, но всъщност не изобщо, 13 00:00:39,000 --> 00:00:41,000 така че ние ще се говори малко за самия език 14 00:00:41,000 --> 00:00:45,000 и след това как да се изгради iPhone приложения, които използват това приложение програма, наречена Xcode, 15 00:00:45,000 --> 00:00:48,000 които, ако не сте го изтеглили все още се чувстват свободни да започнете изтеглянето. 16 00:00:48,000 --> 00:00:50,000 Това е няколко гигабайта. 17 00:00:50,000 --> 00:00:54,000 Тя трябва да бъде безплатно в App Store, така че ще трябва да има Mac 18 00:00:54,000 --> 00:00:57,000 идеално използвате последната версия на OS X. 19 00:00:57,000 --> 00:00:59,000 Ако не сте, няма проблем. 20 00:00:59,000 --> 00:01:02,000 Имаме Mac-ове в науката център за ваша употреба 21 00:01:02,000 --> 00:01:05,000 с Xcode инсталиран, така че не се колебайте да използвате тези за развитие. 22 00:01:05,000 --> 00:01:07,000 Ако искате да направите един апартамент, но не разполагате с Mac, не се притеснявайте. 23 00:01:07,000 --> 00:01:09,000 Има много на колежа ресурси за това. 24 00:01:09,000 --> 00:01:15,000 И така, след това отиваме да покрие 2-големите примери за различни приложения, които можете да направите. 25 00:01:15,000 --> 00:01:19,000 Objective-C е технически, което се нарича супер набор от C. 26 00:01:19,000 --> 00:01:24,000 Това означава, че всеки код C е валидна и Objective-C код. 27 00:01:24,000 --> 00:01:29,000 Това означава, че ние вид канал, запис на някои допълнителни функции за C. 28 00:01:29,000 --> 00:01:33,000 Някои от тези функции не включват някога да напишем изчистване отново, благодаря на Бога, 29 00:01:33,000 --> 00:01:36,000 не се налага да се притеснявате за тези глупави насоки и ги освобождава и всички тези неща 30 00:01:36,000 --> 00:01:40,000 вас е намразил за C, и това е вид отиде в Objective-C. 31 00:01:40,000 --> 00:01:43,000 >> Сега, Objective-C също така има много по-голяма стандартната библиотека, 32 00:01:43,000 --> 00:01:47,000 така че е много по-голяма функционалност, можете да получите безплатно вътрешността на Objective-C. 33 00:01:47,000 --> 00:01:50,000 Помниш ли, когато бяхме писмено PHP забелязахме, че отидохме 34 00:01:50,000 --> 00:01:54,000 тази малката език гигантската библиотека на всички тези луди неща, които можете да направите. 35 00:01:54,000 --> 00:01:56,000 Същото нещо се случва в IOS. 36 00:01:56,000 --> 00:01:59,000 Има обекти за неща, като календар будистки, и наистина нищо 37 00:01:59,000 --> 00:02:05,000 евентуално може да мисля, че вероятно вече съществува в изпълнение на Objective-C. 38 00:02:05,000 --> 00:02:08,000 Целта част от Objective-C е съотнасяне нещо 39 00:02:08,000 --> 00:02:11,000 Обектно-ориентирано програмиране. 40 00:02:11,000 --> 00:02:14,000 Това е вид на нова концепция, но всъщност сме най-вече научих 41 00:02:14,000 --> 00:02:17,000 много на тези понятия вече. 42 00:02:17,000 --> 00:02:19,000 Идеята Обектно-ориентирано програмиране е, че ти започваш да се структурира 43 00:02:19,000 --> 00:02:23,000 много на кода си около тези неща, наречени класове, 44 00:02:23,000 --> 00:02:26,000 и тези класове са наистина прослави structs. 45 00:02:26,000 --> 00:02:30,000 Вътре на структурата основно казано тук е нещо, 46 00:02:30,000 --> 00:02:32,000 и това нещо може да има членове. 47 00:02:32,000 --> 00:02:35,000 Например, един възел в свързан списък може да има и други неща 48 00:02:35,000 --> 00:02:38,000 като стойност, указател към следващия възел в списъка, 49 00:02:38,000 --> 00:02:44,000 и заедно, че показалеца и тази стойност състои тази инстанция на структурата. 50 00:02:44,000 --> 00:02:47,000 Класовете са много сходни, с изключение на 51 00:02:47,000 --> 00:02:50,000 класове също могат да имат функции вътре в тях. 52 00:02:50,000 --> 00:02:54,000 Когато обяви структура, бихме могли само да кажа, INT N или възел * следващия. 53 00:02:54,000 --> 00:02:57,000 >> Сега с Objective-C, ние всъщност може да постави функции 54 00:02:57,000 --> 00:02:59,000 вътре в тези неща. 55 00:02:59,000 --> 00:03:03,000 Друго нещо, което класове може да направи е, че те могат да наследят данни от други класове. 56 00:03:03,000 --> 00:03:07,000 Например, ние ще се търсят в един куп вградени в Objective-C класа. 57 00:03:07,000 --> 00:03:11,000 Един от тях може да бъде клас, който представлява за екрана, 58 00:03:11,000 --> 00:03:14,000 и така, като казвам, че искат да приложат моето лично мнение 59 00:03:14,000 --> 00:03:18,000 ние основно каже някой в ​​продължение на Apple, вероятно наистина приятни хора, 60 00:03:18,000 --> 00:03:21,000 написал този клас за мен, и дръжки неща като показване на бутоните 61 00:03:21,000 --> 00:03:25,000 или предоставянето на екрана, и ще бъде наистина болезнено 62 00:03:25,000 --> 00:03:28,000 за изпълнение на всичко, което се функционалност и т.н., като просто 63 00:03:28,000 --> 00:03:31,000 наследява данни можем да кажем всичко, което сте направили в този клас 64 00:03:31,000 --> 00:03:34,000 Аз също искам вътре в моя клас, и тогава аз ще да се направят някои други неща, 65 00:03:34,000 --> 00:03:37,000 а именно прилагането на ап. 66 00:03:37,000 --> 00:03:40,000 Ето какво означава тази дума наследство. Ще видим по-конкретен пример. 67 00:03:40,000 --> 00:03:42,000 >> И накрая, ключ с обектно-ориентирано програмиране е, че 68 00:03:42,000 --> 00:03:45,000 това води до данни капсулиране. 69 00:03:45,000 --> 00:03:48,000 В някои на нашия проблем, бихме могли да имаме тези големи, глобални променливи 70 00:03:48,000 --> 00:03:51,000 и глобални навсякъде, и това е как ще следите на държавата. 71 00:03:51,000 --> 00:03:55,000 С класове можем да започнем капсулиране информация в рамките на един обект. 72 00:03:55,000 --> 00:03:58,000 Ако имаме един екран ни приложение, ние не наистина трябва да има някакви данни от 73 00:03:58,000 --> 00:04:01,000 друг екран в нашата ап вътрешността на това, 74 00:04:01,000 --> 00:04:04,000 и така чрез капсулиране на нещата в класове това всъщност води 75 00:04:04,000 --> 00:04:08,000 много по-добър код дизайн, и това е възможно с някои допълнителни възможности 76 00:04:08,000 --> 00:04:11,000 Objective-C. 77 00:04:11,000 --> 00:04:15,000 Предварителен знак, синтаксиса за Objective-C е банани. 78 00:04:15,000 --> 00:04:19,000 То е като нищо не сме виждали преди, 79 00:04:19,000 --> 00:04:22,000 така че е малко на кривата на обучение да се използва за 80 00:04:22,000 --> 00:04:24,000 какво по дяволите означава това? 81 00:04:24,000 --> 00:04:27,000 Но след като се минало, че първоначално кривата на обучение е много, много гладка 82 00:04:27,000 --> 00:04:29,000 да започнете да пишете приложения. 83 00:04:29,000 --> 00:04:33,000 >> Да се ​​обяви един клас, да кажа е моя клас, тя съществува, 84 00:04:33,000 --> 00:04:35,000 и може би тук са някои неща, които аз ще да се определи по-късно, 85 00:04:35,000 --> 00:04:38,000 Отивам да се каже @ интерфейс. 86 00:04:38,000 --> 00:04:41,000 Отивам да се каже @ интерфейс. Отивам да дам моя клас име. 87 00:04:41,000 --> 00:04:43,000 А после някъде другаде Отивам да кажа @ края 88 00:04:43,000 --> 00:04:46,000 и всичко между @ интерфейс и @ края 89 00:04:46,000 --> 00:04:48,000 ще бъде моя клас. 90 00:04:48,000 --> 00:04:51,000 Това ще бъде това, което е вътре в нашите файлове ч. 91 00:04:51,000 --> 00:04:55,000 Точно като в C нашите ч. файлове просто казват тук са някои неща, които ще съществуват. 92 00:04:55,000 --> 00:04:57,000 Аз не съм непременно да ви казвам какво правят все още, 93 00:04:57,000 --> 00:04:59,000 но компилаторът трябва да знае, че те съществуват. 94 00:04:59,000 --> 00:05:04,000 -Късно в рамките на нашата m файлове, защото m за Objective-C 95 00:05:04,000 --> 00:05:08,000 е мястото, където ние всъщност ще се определи това, което правят тези класове. 96 00:05:08,000 --> 00:05:11,000 По подобие на нашите файлове в условие за изпълнение на функциите. 97 00:05:11,000 --> 00:05:15,000 Вътре ни m файл отиваме да се каже тук е това, което всички функции 98 00:05:15,000 --> 00:05:18,000 вътре в моя клас всички те вършат. 99 00:05:18,000 --> 00:05:22,000 И накрая, вътре на структурата може да се каже, в рамките на тези фигурни скоби 100 00:05:22,000 --> 00:05:25,000 INT N или възел * следващия, 101 00:05:25,000 --> 00:05:28,000 и в Objective-C, ние ще използваме ключовата дума @ имот, 102 00:05:28,000 --> 00:05:31,000 и това е какво ще се определят, 103 00:05:31,000 --> 00:05:36,000 или функции, които са част от моите класове. 104 00:05:36,000 --> 00:05:40,000 >> Разговори функции в Objective-C е банани. 105 00:05:40,000 --> 00:05:43,000 Когато ние декларирахме функции в C казахме нещо като INT Foo 106 00:05:43,000 --> 00:05:46,000 и отворена скоба и след това го е дал списък от аргументи. 107 00:05:46,000 --> 00:05:51,000 Това е, което деклариране на методи и функции прилича в Objective-C. 108 00:05:51,000 --> 00:05:54,000 Ако искам да декларират функция или метод 109 00:05:54,000 --> 00:05:58,000 където аз казвам метод е наистина само една функция, която е член на класа, 110 00:05:58,000 --> 00:06:01,000 така вид взаимозаменяеми, но не съвсем, 111 00:06:01,000 --> 00:06:03,000 така в рамките на моя метод Искам да създам нов метод. 112 00:06:03,000 --> 00:06:06,000 Той ще се върне нищо, така че ще бъде от тип невалидни. 113 00:06:06,000 --> 00:06:08,000 Това е типът на връщане на моята функция. 114 00:06:08,000 --> 00:06:11,000 Сега имаме Перънс тук, защото аз не знам. 115 00:06:11,000 --> 00:06:14,000 След това ще бъде името на моята функция, 116 00:06:14,000 --> 00:06:17,000 и най-накрая имаме точка и запетая, като имахме C. 117 00:06:17,000 --> 00:06:19,000 Какво е новото тук е този човек тук. 118 00:06:19,000 --> 00:06:22,000 Това тире всъщност е необходимо, и това казва, че 119 00:06:22,000 --> 00:06:26,000 този метод тук трябва да бъде извикана на инстанция на даден клас. 120 00:06:26,000 --> 00:06:29,000 >> След като ние декларирахме нашите structs вероятно каза нещо като 121 00:06:29,000 --> 00:06:32,000 структура на възли N, и че всъщност е създаден 122 00:06:32,000 --> 00:06:35,000 или инстанция на един от тези structs, така че в действителност може да започне работа 123 00:06:35,000 --> 00:06:38,000 с това, което е вътре в него, така че това тире означава, че ние трябва да 124 00:06:38,000 --> 00:06:41,000 инстанциира клас, точно както инстанция, че структурата на 125 00:06:41,000 --> 00:06:43,000 , преди да можем да наречем този метод върху него. 126 00:06:43,000 --> 00:06:46,000 Ако искам да започнете да добавяте аргументи за моите методи 127 00:06:46,000 --> 00:06:48,000 той получава дори повече банани. 128 00:06:48,000 --> 00:06:50,000 Това е името на моя метод. 129 00:06:50,000 --> 00:06:53,000 Тогава аз ще трябва двоеточие, и след това дебелото черво тя казва, тук идва някои аргументи. 130 00:06:53,000 --> 00:06:56,000 Този метод се приема само един аргумент. 131 00:06:56,000 --> 00:06:59,000 Видът на нейната теза е едно цяло число, както и името на този аргумент 132 00:06:59,000 --> 00:07:03,000 или променлива, че аз отивам да започнете да използвате вътрешността на метода е, че т.нар. 133 00:07:03,000 --> 00:07:05,000 Отново, това е метод. Това отнема един аргумент. 134 00:07:05,000 --> 00:07:10,000 >> Ако искате да започнете да добавяте повече аргументи, той получава повече банани 135 00:07:10,000 --> 00:07:13,000 в това, че ние сме това дебелото черво, което се казва тук идва моя списък от аргументи. 136 00:07:13,000 --> 00:07:15,000 Това първият аргумент е цяло число. 137 00:07:15,000 --> 00:07:17,000 Сега, това Вторият аргумент е интересно. 138 00:07:17,000 --> 00:07:20,000 Променливата, че аз отивам да се използва в рамките на моята функция 139 00:07:20,000 --> 00:07:23,000 се нарича F, така че в рамките на функция ми може да се каже, 140 00:07:23,000 --> 00:07:25,000 F + = 1 или нещо такова. 141 00:07:25,000 --> 00:07:30,000 Това нещо тук е основно ключ за този аргумент или параметър. 142 00:07:30,000 --> 00:07:34,000 Точно като имахме ключови двойки стойност и нещо като JSON или асоциативни масиви 143 00:07:34,000 --> 00:07:37,000 Objective-C е взела решение да се каже, добре, просто така, че е съвсем ясно 144 00:07:37,000 --> 00:07:39,000 когато ти се обадя метод, това, което всички тези параметри са 145 00:07:39,000 --> 00:07:41,000 Всъщност ще да назовем всички тях. 146 00:07:41,000 --> 00:07:45,000 Когато извикате метод, всъщност ще кажа andFloat 147 00:07:45,000 --> 00:07:47,000 и тогава ще го давате. 148 00:07:47,000 --> 00:07:50,000 >> Интересното е, че това не е кръстен, но всички други параметри са, 149 00:07:50,000 --> 00:07:53,000 така че ако имахме 3-ти аргумент мога да кажа, andFloat 150 00:07:53,000 --> 00:07:56,000 и друга плувка и така нататък. 151 00:07:56,000 --> 00:08:01,000 Когато аз наричам тези методи е, разбира се банани, 152 00:08:01,000 --> 00:08:04,000 така че, ако имате обект, и определя метод, наречен Foo 153 00:08:04,000 --> 00:08:09,000 и аз искам да го наричат, вместо да каже Foo Open / Close Перънс 154 00:08:09,000 --> 00:08:11,000 Аз ще отворя една скоба. 155 00:08:11,000 --> 00:08:13,000 Това е името на моя метод. 156 00:08:13,000 --> 00:08:17,000 Отивам да затворите конзолата и това е обект Обаждам го. 157 00:08:17,000 --> 00:08:20,000 Не забравяйте, че всички тези методи съществуват в рамките на класове 158 00:08:20,000 --> 00:08:23,000 защото класове могат да разполагат с методи, определени в тях. 159 00:08:23,000 --> 00:08:26,000 >> Тук съм произволно създали обект на някои клас, 160 00:08:26,000 --> 00:08:28,000 и това е синтаксис за това. 161 00:08:28,000 --> 00:08:31,000 Има две стъпки към създаване на обект. 162 00:08:31,000 --> 00:08:34,000 Първата стъпка е да кажа, че искам да се разпределят пространство. 163 00:08:34,000 --> 00:08:37,000 Това е еквивалентът на изчистване. Ние не трябва повече да се каже, изчистване. 164 00:08:37,000 --> 00:08:42,000 Пусна m, го прави заделянето на памет и заменя в. M. 165 00:08:42,000 --> 00:08:47,000 След като заделянето на памет нещо, ние трябва да го инициализира. 166 00:08:47,000 --> 00:08:49,000 По принцип, когато създавате обекти може да искате да има някаква логика 167 00:08:49,000 --> 00:08:53,000 , който изпълнява, когато те са създадени, така че може да премине в някои стойности по подразбиране 168 00:08:53,000 --> 00:08:57,000 или нещо подобно, така че този първоначален метод е това, което всъщност създава обекта. 169 00:08:57,000 --> 00:08:59,000 Първото разпределяне на пространството, точно както направихме в C, 170 00:08:59,000 --> 00:09:04,000 и после го инициализира, който може или не може да направи много. 171 00:09:04,000 --> 00:09:07,000 Тогава Връщаме това нещо в обект о. 172 00:09:07,000 --> 00:09:09,000 Има звезда тук, защото това е технически указател, 173 00:09:09,000 --> 00:09:12,000 но не се притеснявайте, указатели не са, че вече голяма сделка в Objective-C. 174 00:09:12,000 --> 00:09:15,000 >> Сега сме инстанция на този клас, наречен NSObject 175 00:09:15,000 --> 00:09:19,000 и това е просто случаен клас, който Apple има. 176 00:09:19,000 --> 00:09:22,000 Сме инстанция, и сега имам инстанция на този клас 177 00:09:22,000 --> 00:09:25,000 о в този обект, така че това означава, че ако аз определено 178 00:09:25,000 --> 00:09:29,000 тези методи, които биха могли да ги наречем така. 179 00:09:29,000 --> 00:09:31,000 По същия начин, ако искам да се обадя на метод с един аргумент, 180 00:09:31,000 --> 00:09:34,000 така че това е метод на бара, че приема само един аргумент, 181 00:09:34,000 --> 00:09:38,000 и тук е Баз: qux метод, така че това отнема 2 аргументи. 182 00:09:38,000 --> 00:09:44,000 Това се обажда една функция на този обект о. 183 00:09:44,000 --> 00:09:46,000 Направи ли смисъл? 184 00:09:46,000 --> 00:09:50,000 Синтаксисът може да обясни, но някак си да свикна с него. 185 00:09:50,000 --> 00:09:54,000 >> Добре, нека да говорим за няколко неща, които са вградени в Objective-C 186 00:09:54,000 --> 00:09:56,000 , които не са непременно в C. 187 00:09:56,000 --> 00:09:59,000 В C вид трябваше да се справят със струни, тъй като тези глупави масиви характер, 188 00:09:59,000 --> 00:10:01,000 и го много досадно. 189 00:10:01,000 --> 00:10:04,000 Objective-C има всички построени за нас, и е построена през 190 00:10:04,000 --> 00:10:06,000 използването на този клас, наречен NSString. 191 00:10:06,000 --> 00:10:10,000 Когато искам да се създаде NSString имаме по-тайнствена синтаксис. 192 00:10:10,000 --> 00:10:15,000 Вместо да казва "cs50" ние казваме @ "cs50" 193 00:10:15,000 --> 00:10:17,000 и това е само синтаксиса за обявяване на струните, Objective-C. 194 00:10:17,000 --> 00:10:21,000 Това е изключително лесно да се забрави, така че не. 195 00:10:21,000 --> 00:10:24,000 Сега, след като имам това, това е низ, но забележите 196 00:10:24,000 --> 00:10:26,000 това е наистина само един обект. 197 00:10:26,000 --> 00:10:30,000 Казах NSString, което означава, че инстанция на класа 198 00:10:30,000 --> 00:10:32,000 нарича NSString, която някой друг е написал за мен, 199 00:10:32,000 --> 00:10:35,000 и те бяха много хубаво за него, и така сега 200 00:10:35,000 --> 00:10:37,000 Мога да започна да призовава методи върху нея. 201 00:10:37,000 --> 00:10:40,000 Ако аз наричам метод за дължината на този обект 202 00:10:40,000 --> 00:10:43,000 , че ще се върне за мен дължината на низа. 203 00:10:43,000 --> 00:10:45,000 Това е точно като strlen C. 204 00:10:45,000 --> 00:10:47,000 Това ще се върне 4. 205 00:10:47,000 --> 00:10:51,000 >> По същия начин, друг метод, може да искате да се грижи за тази characterAtIndex. 206 00:10:51,000 --> 00:10:54,000 Това е метод, който казва тази струна е 207 00:10:54,000 --> 00:10:57,000 Искам да получите zeroth характер, 208 00:10:57,000 --> 00:10:59,000 и така това ще се върнат да ми характер в 209 00:10:59,000 --> 00:11:02,000 а има и още цял куп от тези методи, които можете да Google наистина лесно. 210 00:11:02,000 --> 00:11:07,000 Документация на Apple е голям, а ние ще се погледнете, че в малко. 211 00:11:07,000 --> 00:11:09,000 Това са струни. 212 00:11:09,000 --> 00:11:11,000 Ние също така са променливи масиви размер. 213 00:11:11,000 --> 00:11:13,000 Запомни ме C, когато ние декларирахме масив 214 00:11:13,000 --> 00:11:16,000 ние трябваше да кажем, че имате пет елементи, край на историята. 215 00:11:16,000 --> 00:11:18,000 Когато стигнахме до JavaScript и PHP можем да започнем 216 00:11:18,000 --> 00:11:20,000 правене на нещата, като добавянето на елементи или преместването на елементите. 217 00:11:20,000 --> 00:11:22,000 Ние можем да направим същото и в Objective-C. 218 00:11:22,000 --> 00:11:26,000 Вместо да се създаде масив по нормалния начин C 219 00:11:26,000 --> 00:11:30,000 имаме отново друг клас наречен NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 Има също NSArray 221 00:11:33,000 --> 00:11:35,000 и това е всъщност да се оформят някои масив. 222 00:11:35,000 --> 00:11:38,000 Това казва, че първото нещо, което искам да направя е, че искате да разпределите 223 00:11:38,000 --> 00:11:41,000 пространство за нов масив, и след като го разпределят 224 00:11:41,000 --> 00:11:43,000 След това трябва да го инициализира. 225 00:11:43,000 --> 00:11:45,000 Отново призовава тези два метода. 226 00:11:45,000 --> 00:11:48,000 А това означава, че вътре в този обект 227 00:11:48,000 --> 00:11:50,000 Съм празен масив седи там. 228 00:11:50,000 --> 00:11:54,000 Ако искате да добавите нещо към този масив, мога да се обадя на addObject метод. 229 00:11:54,000 --> 00:11:59,000 Искам да добавите обект към масива на, и искам да добавя низ CS50. 230 00:11:59,000 --> 00:12:02,000 Ако исках да премахнете обратно, че мога да кажа, искам да 231 00:12:02,000 --> 00:12:09,000 премахване на обекта на първо място на масив или възразява. 232 00:12:09,000 --> 00:12:11,000 >> Направи ли смисъл? 233 00:12:11,000 --> 00:12:14,000 Добре, някак си да свикне с този площад нещо на конзолата. 234 00:12:14,000 --> 00:12:18,000 Между другото, вътре в много библиотеки на Apple ще видите тази NS. 235 00:12:18,000 --> 00:12:21,000 NS всъщност означава за следващата стъпка, която е един от Стив Джобс първи дружества, 236 00:12:21,000 --> 00:12:24,000 и това е мястото, където той наистина започнах да пиша много на кода 237 00:12:24,000 --> 00:12:27,000 като вид основа за Mac OS X и всички други неща, 238 00:12:27,000 --> 00:12:32,000 и така това NS е на тази хубава наследство вик на един от по-ранните компании 239 00:12:32,000 --> 00:12:34,000 обратно, когато Apple За първи път е началото. 240 00:12:34,000 --> 00:12:36,000 Тя е навсякъде. 241 00:12:36,000 --> 00:12:41,000 Нека хвърлим един поглед към един по-цялостен Objective-C например. 242 00:12:41,000 --> 00:12:44,000 Тук съм вътре в Xcode. 243 00:12:44,000 --> 00:12:47,000 За да получите тук, аз първо се изтегля Xcode от App Store, 244 00:12:47,000 --> 00:12:50,000 отвори го и след това отидох до тук, за да файл, 245 00:12:50,000 --> 00:12:54,000 тук нов, а след това проект. 246 00:12:54,000 --> 00:12:57,000 След като го направя, че имам всички тези варианти на това, което искате да създадете, 247 00:12:57,000 --> 00:12:59,000 и така ние ще разгледаме в тези опции по-късно, 248 00:12:59,000 --> 00:13:03,000 но само за този пример, защото ние не сме в действителност ще има още един апартамент, 249 00:13:03,000 --> 00:13:06,000 Дойдох тук, и аз казах командния ред инструмент, 250 00:13:06,000 --> 00:13:09,000 и това е приложение, което мога да тичам в командния ред 251 00:13:09,000 --> 00:13:12,000 точно както ние сме били от C. 252 00:13:12,000 --> 00:13:16,000 Ето как е създаден този проект, и затова сега съм тук, 253 00:13:16,000 --> 00:13:20,000 така че нека пръв поглед в този файл, и това трябва да изглежда доста запознат. 254 00:13:20,000 --> 00:13:24,000 Имам INT име. Ми е приятел argc, другият ми приятел argv. 255 00:13:24,000 --> 00:13:30,000 И така, можем да видим, че това е входната точка за първото ми Objective-C. 256 00:13:30,000 --> 00:13:32,000 Тук можем да игнорираме това за сега. 257 00:13:32,000 --> 00:13:35,000 Това е основно някои неща, управление на паметта, която не наистина 258 00:13:35,000 --> 00:13:37,000 някога трябва да се притесняваш. 259 00:13:37,000 --> 00:13:39,000 >> Нека погледнем на този първи блок. 260 00:13:39,000 --> 00:13:46,000 Тази първа линия, ако кажа, Студентски * Алиса = [[Student заделянето на памет] Init това, което е, че правиш? 261 00:13:46,000 --> 00:13:50,000 Това първият студент тук, това е може би един клас. 262 00:13:50,000 --> 00:13:54,000 Това не е класа, която Apple пише, но това е класа, която съм написал. 263 00:13:54,000 --> 00:13:57,000 Първото нещо, което искам да направя е, искам да отпусне място за нов ученик, 264 00:13:57,000 --> 00:14:00,000 и след това искам да го инициализира, така че това ми дава обратно 265 00:14:00,000 --> 00:14:05,000 този нов обект студент, и аз съм съхраняване в променлива наречена Алис. 266 00:14:05,000 --> 00:14:07,000 Откъде дойде този клас? 267 00:14:07,000 --> 00:14:12,000 Е, тук от лявата страна, те са от различни файлове вътре в моя проект. 268 00:14:12,000 --> 00:14:16,000 Ние можем да видим тук имам Student.h и Student.m. 269 00:14:16,000 --> 00:14:20,000 З файл, не забравяйте, е мястото, където Декларирам, всички неща, 270 00:14:20,000 --> 00:14:22,000 , които ще съществуват в рамките на класа. 271 00:14:22,000 --> 00:14:25,000 >> Нека хвърлим един поглед на това. 272 00:14:25,000 --> 00:14:29,000 Добре, тук имаме този @ интерфейс, и това казва, че тук идва 273 00:14:29,000 --> 00:14:33,000 декларациите за всичко, което ще съществува в моя клас. 274 00:14:33,000 --> 00:14:36,000 Тогава имам дебелото черво. Тогава имам този NSObject нещо. 275 00:14:36,000 --> 00:14:40,000 Това дебелото черво означава, че наследството малко обсъждахме малко по-рано. 276 00:14:40,000 --> 00:14:43,000 Това казва всичко, което може да направи NSObject 277 00:14:43,000 --> 00:14:46,000 където NSObject е този клас, написана от някой друг, 278 00:14:46,000 --> 00:14:50,000 всичко тази NSObject може да направи Искам да бъда в състояние да направи това. 279 00:14:50,000 --> 00:14:54,000 С, казвайки: NSObject, които означава, че аз основно 280 00:14:54,000 --> 00:14:58,000 наследени от функционалността на друг клас. 281 00:14:58,000 --> 00:15:02,000 Това наистина ми даде цял куп различни методи и свойства, които мога да използвам. 282 00:15:02,000 --> 00:15:05,000 Тук долу съм създаване на две свойства. 283 00:15:05,000 --> 00:15:08,000 Това означава, че мой ученик, ако това беше структурата, те ще са две неща 284 00:15:08,000 --> 00:15:11,000 вътре на моята структура, така че всеки ученик има име 285 00:15:11,000 --> 00:15:14,000 че е низ, и един студент има степен, 286 00:15:14,000 --> 00:15:17,000 което е вътр. 287 00:15:17,000 --> 00:15:23,000 >> И накрая, тук аз отивам да се създаде метод за мой ученик. 288 00:15:23,000 --> 00:15:26,000 Се обадих на моя метод, initWithName и приема само един аргумент, 289 00:15:26,000 --> 00:15:31,000 и този аргумент е низ, и се обадих го наречете. 290 00:15:31,000 --> 00:15:35,000 Сега нека да разгледаме как можем действително осъществени този клас. 291 00:15:35,000 --> 00:15:38,000 Ето, сега съм вътре на моя файл m, 292 00:15:38,000 --> 00:15:40,000 m за изпълнение, предполагам. 293 00:15:40,000 --> 00:15:44,000 Аз имам изпълнението моя край, и тук е мястото, където аз съм всъщност определяне 294 00:15:44,000 --> 00:15:47,000 какво initWithName. 295 00:15:47,000 --> 00:15:50,000 Имам initWithName, името на моя параметър, и след това 296 00:15:50,000 --> 00:15:53,000 е мястото, където аз съм всъщност създаването на един студент, 297 00:15:53,000 --> 00:15:56,000 и така това е малко загадъчно, но това е един вид на стереотипния 298 00:15:56,000 --> 00:15:58,000 , които искате да включите във вашите конструктори. 299 00:15:58,000 --> 00:16:02,000 Тази инициализация функция тук, initWithName, е вид на конструктор. 300 00:16:02,000 --> 00:16:05,000 Вие сте основно изграждане на нов обект студент 301 00:16:05,000 --> 00:16:07,000 а може би и изпращането на някои данни вътре в него. 302 00:16:07,000 --> 00:16:11,000 Първото нещо, което искам да направя е, че искате да се обадите първоначален на този супер нещо. 303 00:16:11,000 --> 00:16:15,000 >> Не забравяйте, че когато казах тук. Файл ч 304 00:16:15,000 --> 00:16:21,000 че всичко NSObject студент има. 305 00:16:21,000 --> 00:16:24,000 Това означава, че ако създам студент, това, което трябва да направите, е 306 00:16:24,000 --> 00:16:28,000 уверете се, че NSObject, че аз съм наследява на тези данни от 307 00:16:28,000 --> 00:16:32,000 се инициализира правилно. 308 00:16:32,000 --> 00:16:36,000 Това, което трябва да ти кажа, това е супер всъщност се случва да се позове на родителския клас 309 00:16:36,000 --> 00:16:39,000 че съм наследява, така че искам да съм сигурен, че се инициализира 310 00:16:39,000 --> 00:16:43,000 всичко, което съм в зависимост от преди да започна да се опитва да го използвате. 311 00:16:43,000 --> 00:16:46,000 Тогава, ако инициализирани правилно, това е просто като да кажеш, ако изчистване 312 00:16:46,000 --> 00:16:50,000 не се върне нула, след това може да започне определянето на някои имоти. 313 00:16:50,000 --> 00:16:54,000 >> В JavaScript и PHP бяхме тази ключова дума, наречена това, 314 00:16:54,000 --> 00:16:58,000 и това се отнася за текущата инстанция на класа. 315 00:16:58,000 --> 00:17:00,000 Objective-C, ние наричаме това самостоятелно. 316 00:17:00,000 --> 00:17:04,000 Когато казвам self.name, това означава, че обектът 317 00:17:04,000 --> 00:17:07,000 Току-що създадох, когато казах, студент заделянето на памет първоначален, 318 00:17:07,000 --> 00:17:09,000 че ще ме върне обект. 319 00:17:09,000 --> 00:17:12,000 Това означава, че искате да зададете име на този обект 320 00:17:12,000 --> 00:17:15,000 какъвто и да е току-що премина. 321 00:17:15,000 --> 00:17:18,000 Точно както в C, достъп до членовете с тази точка, 322 00:17:18,000 --> 00:17:21,000 така self.name казва името на студента обект 323 00:17:21,000 --> 00:17:24,000 сега ще бъде, каквото вие току-що премина. 324 00:17:24,000 --> 00:17:28,000 И най-сетне, мога да го върне, така че аз всъщност се върна нещо. 325 00:17:28,000 --> 00:17:30,000 >> Въпроси? 326 00:17:30,000 --> 00:17:34,000 Добре, така че това самостоятелно = супер първоначален, 327 00:17:34,000 --> 00:17:37,000 ако не напълно разбирам нещата наследство не се притеснявайте. 328 00:17:37,000 --> 00:17:40,000 Просто знам, че ако някога искате да направите своя собствена първоначален метод 329 00:17:40,000 --> 00:17:42,000 направи това, и ще бъде добре да тръгвам. 330 00:17:42,000 --> 00:17:44,000 Да. >> Студентски] Какво означава ако самостоятелно средната? 331 00:17:44,000 --> 00:17:49,000 Това означава, че когато ние изчистване нещо, ние винаги се проверява, ако тя е равна на нула, 332 00:17:49,000 --> 00:17:51,000 и ако е нула, а след това излезе. 333 00:17:51,000 --> 00:17:55,000 Това е едно и също нещо, защото ако това се връща нула, а след това ние сме най-вероятно ще сегмента вина 334 00:17:55,000 --> 00:17:57,000 ако ние започнем да се опитваме да го манипулира. 335 00:17:57,000 --> 00:18:01,000 Това е нашия студент клас. 336 00:18:01,000 --> 00:18:03,000 Това означава, че ние може да се инициализира на нашите ученици в един от двата начина. 337 00:18:03,000 --> 00:18:08,000 Ако кажа, че студент заделянето на памет първоначален аз не съм с този метод, че аз просто пише, 338 00:18:08,000 --> 00:18:11,000 и вместо това може просто да се каже, alice.name, 339 00:18:11,000 --> 00:18:14,000 и сега отивам да зададете, че името на собствеността. 340 00:18:14,000 --> 00:18:17,000 >> По същия начин, ако искам да използвам този метод initWithName 341 00:18:17,000 --> 00:18:20,000 Мога просто да кажа, заделянето на памет, а след това, а не казва INIT 342 00:18:20,000 --> 00:18:24,000 Отивам да се обадя на този метод, че току-що създадохте, и аз отивам да премине в Боб. 343 00:18:24,000 --> 00:18:30,000 В този момент, този обект Боб име, равна на Боб. 344 00:18:30,000 --> 00:18:35,000 Добре, тук съм, че NSMutableArray, които разгледахме по-рано. 345 00:18:35,000 --> 00:18:38,000 Аз разпределяне space.Then съм инициализиране на нов масив. 346 00:18:38,000 --> 00:18:40,000 Отивам да добавите две неща към него. 347 00:18:40,000 --> 00:18:43,000 Този масив сега има студентски обекти. 348 00:18:43,000 --> 00:18:46,000 Забележете, че никъде аз трябва да кажа, това е масив на учениците. 349 00:18:46,000 --> 00:18:48,000 Казах, че е масив, период. 350 00:18:48,000 --> 00:18:50,000 Тогава мога да сложа каквато и да е вътре в него, че искам. 351 00:18:50,000 --> 00:18:52,000 Тук имам две обекти. 352 00:18:52,000 --> 00:18:56,000 >> И накрая, имам друг обект тук, тази TF. 353 00:18:56,000 --> 00:18:59,000 Тук в TF.h в общи линии едно и също нещо. 354 00:18:59,000 --> 00:19:01,000 Съм наследява от NSObject, и от начина, по който 355 00:19:01,000 --> 00:19:03,000 когато създавате класове всичко това е направено за вас, 356 00:19:03,000 --> 00:19:06,000 този вид интерфейс стереотипния. 357 00:19:06,000 --> 00:19:08,000 Тя е собственост на студентите. 358 00:19:08,000 --> 00:19:15,000 Имам няколко методи, че тук наистина не правите и един куп 359 00:19:15,000 --> 00:19:18,000 и така, това означава, че след създам този обект TF 360 00:19:18,000 --> 00:19:23,000 Да се ​​обадя на този метод клас върху него по този начин. 361 00:19:23,000 --> 00:19:26,000 Всички въпроси относно синтаксис Objective-C, преди да започнат да се движат в някои по- 362 00:19:26,000 --> 00:19:30,000 развитието на интересни приложения неща? 363 00:19:30,000 --> 00:19:34,000 >> Добре, така че нека направи iPhone App. 364 00:19:34,000 --> 00:19:39,000 Основните класове, които ще се използват в рамките на iPhone приложението си се наричат ​​гледка контролери, 365 00:19:39,000 --> 00:19:42,000 и изглед контролер най-общо представлява един екран 366 00:19:42,000 --> 00:19:46,000 вътрешността на приложението ви, така че ако аз съм на приложението на музиката, например, 367 00:19:46,000 --> 00:19:50,000 може да представлява един контролер оглед, в който видите всички песни на моя iPhone. 368 00:19:50,000 --> 00:19:53,000 Изглед друг администратор, може да бъде, когато щракнете върху песента и да започнете да го играе 369 00:19:53,000 --> 00:19:55,000 или, както аз съм пробиване на художници. 370 00:19:55,000 --> 00:19:59,000 Всяка от тези различни екрани могат да бъдат представени като контролер различно виждане, 371 00:19:59,000 --> 00:20:04,000 и изглед контролер е наистина само един клас, който казва как работи този екран. 372 00:20:04,000 --> 00:20:07,000 Нещата вътре оглед контролер, отиваме да имат свойства, 373 00:20:07,000 --> 00:20:10,000 така че нещата като един бутон ще бъде собственост на наша гледна точка контролер. 374 00:20:10,000 --> 00:20:13,000 >> Ние сме също така ще разполагат с методи, и те са основно събитие хендлери. 375 00:20:13,000 --> 00:20:16,000 Този метод се казва, че когато натиснете този бутон 376 00:20:16,000 --> 00:20:19,000 Искам да направя нещо, и накрая, отново 377 00:20:19,000 --> 00:20:24,000 отиваме да се използва самостоятелно дума за достъп до текущата инстанция. 378 00:20:24,000 --> 00:20:29,000 За изграждането на интерфейси в IOS всъщност е наистина лесно. 379 00:20:29,000 --> 00:20:32,000 Те имат интерфейс тази хубава влача и капка Interface Builder, 380 00:20:32,000 --> 00:20:37,000 и на две основни концепции, които тел си Objective-C Interface Builder 381 00:20:37,000 --> 00:20:40,000 са IBOutlet и IBAction. 382 00:20:40,000 --> 00:20:44,000 IBOutlet просто казва, че ако Вие декларирате имот, който е един бутон, 383 00:20:44,000 --> 00:20:47,000 и искате да го свържете към нещо в действителност UI, 384 00:20:47,000 --> 00:20:49,000 ти започваш да се каже, това е изход. 385 00:20:49,000 --> 00:20:51,000 Също така, ако искате да представляват манипулатора на събитие 386 00:20:51,000 --> 00:20:54,000 тогава започваш да се каже, това е действие. 387 00:20:54,000 --> 00:20:57,000 >> За да преведете тази графично представяне 388 00:20:57,000 --> 00:21:00,000 и кода си, че е много, много проста. 389 00:21:00,000 --> 00:21:03,000 Ако искате да прикачите IBOutlet, всичко, което трябва да направите, е да контролирате кликване, 390 00:21:03,000 --> 00:21:05,000 и ще видим пример за това наистина бързо. 391 00:21:05,000 --> 00:21:07,000 Вие контролирате щракнете там, където се казва View Controller. 392 00:21:07,000 --> 00:21:09,000 Ти ще плъзне в интерфейса, или обратното, 393 00:21:09,000 --> 00:21:13,000 ако искате да свържете манипулатора на събитие ти започваш да се плъзне от интерфейса 394 00:21:13,000 --> 00:21:15,000 в другата посока. 395 00:21:15,000 --> 00:21:20,000 Нека да погледнем наистина прост пример IOS. 396 00:21:20,000 --> 00:21:23,000 >> Нека създадем нов проект. 397 00:21:23,000 --> 00:21:25,000 Отивам да дойде тук, за да Заявление, 398 00:21:25,000 --> 00:21:28,000 и аз отивам да щракнете върху едно заявление View. 399 00:21:28,000 --> 00:21:31,000 Отивам да щракнете върху следващия. Ще дам име на проекта. 400 00:21:31,000 --> 00:21:33,000 Ще го наречем Здравейте. 401 00:21:33,000 --> 00:21:36,000 Интересното е, че Apple предполага, че създаване на продукт 402 00:21:36,000 --> 00:21:38,000 така че можете да го продават и те могат да правят пари. 403 00:21:38,000 --> 00:21:41,000 Тук аз ще да кажа, че това е iPhone App. 404 00:21:41,000 --> 00:21:44,000 Можете да създадете IPAD приложение, или ако искате да създадете един от тези приложения 405 00:21:44,000 --> 00:21:47,000 , която поддържа двете устройства, които можете да направите това твърде. 406 00:21:47,000 --> 00:21:49,000 Те са това, което искате checkmarks да изглежда. 407 00:21:49,000 --> 00:21:51,000 >> Вие искате да използвате сценарии, които ние ще видим по-късно, 408 00:21:51,000 --> 00:21:54,000 и вие определено искате да използвате автоматично преброяване препратка 409 00:21:54,000 --> 00:21:58,000 което е една хубава черта, която ви пречи да се налага да кажа изчистване и безплатен. 410 00:21:58,000 --> 00:22:03,000 Освен ако не искате да се обадите изчистване и свободно, че ще остави тази регистрирания. 411 00:22:03,000 --> 00:22:07,000 Ще Щракнете върху Next (Напред), и накрая, това ще ме питат къде искам да го спаси. 412 00:22:07,000 --> 00:22:14,000 Ще удари създавате, и да го направим. 413 00:22:14,000 --> 00:22:16,000 Съм създал нов проект. 414 00:22:16,000 --> 00:22:19,000 Тук от ляво са всички файлове, които са вътре в моя проект, 415 00:22:19,000 --> 00:22:22,000 и забележите, че имам един куп, а аз дори не направи нищо. 416 00:22:22,000 --> 00:22:24,000 IOS е страхотно. 417 00:22:24,000 --> 00:22:27,000 >> Например, тук ViewController.h 418 00:22:27,000 --> 00:22:30,000 това ще представлява първият контролер оглед, 419 00:22:30,000 --> 00:22:32,000 така че първо екрана вътре в моя апартамент. 420 00:22:32,000 --> 00:22:34,000 Сега знаем какво казва. 421 00:22:34,000 --> 00:22:36,000 Ние сме Обаждам се да кажа, че този клас ViewController 422 00:22:36,000 --> 00:22:40,000 и ViewController прави всичко, че UIViewController, 423 00:22:40,000 --> 00:22:43,000 и това отново е някакъв клас, който Apple пише, че прави много удобен неща за нас 424 00:22:43,000 --> 00:22:46,000 като изведете екрана. 425 00:22:46,000 --> 00:22:50,000 Тук е мястото, където действително може да започне определянето на това, което според мен контролер, 426 00:22:50,000 --> 00:22:52,000 и се оказва, че аз наистина не се нуждаят от това. 427 00:22:52,000 --> 00:22:55,000 Това е стереотипния код, който Apple ми дава безплатно. 428 00:22:55,000 --> 00:22:59,000 Се нуждаят от този първи ред, или не разполагат с класа, 429 00:22:59,000 --> 00:23:02,000 за да можем да се отървем от това и да се отървете от това. 430 00:23:02,000 --> 00:23:05,000 Добре, така че това ми е празен екран. 431 00:23:05,000 --> 00:23:08,000 >> Сега нека да кликнете върху този MainStoryboard.storyboard, 432 00:23:08,000 --> 00:23:11,000 и това е мястото, където започва да става интересно. 433 00:23:11,000 --> 00:23:14,000 Това представлява първия екран на моя апартамент. 434 00:23:14,000 --> 00:23:17,000 Ако искам да добавите бутон в HTML имах да създадете етикет бутона. 435 00:23:17,000 --> 00:23:20,000 В Android имате да създадете етикет бутона, 436 00:23:20,000 --> 00:23:23,000 но в IOS, ако аз просто дойде тук в долния десен 437 00:23:23,000 --> 00:23:27,000 и ако кликнете върху това 3-то тук, където се казва обекти, 438 00:23:27,000 --> 00:23:31,000 и мога да превъртите надолу, или да започнат да търсят за бутона. 439 00:23:31,000 --> 00:23:35,000 И изглежда, един бутон, така че, ако действително влачите и пускате това право, 440 00:23:35,000 --> 00:23:38,000 Току-що добавя бутон към този екран на моя апартамент. 441 00:23:38,000 --> 00:23:41,000 Ако искате да промените текста, мога да кликнете двукратно върху него, 442 00:23:41,000 --> 00:23:47,000 каже нещо привлекателен като "Me Натиснете". 443 00:23:47,000 --> 00:23:51,000 Добре, сега, ако стартирате това приложение, така че ние да го компилирате, 444 00:23:51,000 --> 00:23:54,000 така да го стартирате натиснете бутона за възпроизвеждане в горния ляв и има моя апартамент. 445 00:23:54,000 --> 00:23:58,000 Не съм направил нищо, и аз имам сладък iPhone App. 446 00:23:58,000 --> 00:24:01,000 Ако искам да го спре, можете да щракнете върху бутона стоп 447 00:24:01,000 --> 00:24:03,000 защото е по-забавно. 448 00:24:03,000 --> 00:24:07,000 >> Да кажем, че аз всъщност искам нещо да се случи, когато натиснете този бутон. 449 00:24:07,000 --> 00:24:09,000 За да направите това, това, което трябва да направите, е трябва да се създаде 450 00:24:09,000 --> 00:24:13,000 нов манипулатора на събитие или действие. 451 00:24:13,000 --> 00:24:16,000 Това означава, че трябва да се създаде някакъв начин, че искам да се нарича 452 00:24:16,000 --> 00:24:18,000 при натискане на бутона, така че нека създадем нов метод. 453 00:24:18,000 --> 00:24:20,000 Аз съм вътрешността на ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Искам да кажа, че съществува. 455 00:24:22,000 --> 00:24:26,000 Имам нужда от тире първо, защото аз отивам да се обади на контролера. 456 00:24:26,000 --> 00:24:28,000 Трябва да се даде този тип. 457 00:24:28,000 --> 00:24:31,000 Типът на това ще бъде нещо, което видяхме по-рано, че IBAction. 458 00:24:31,000 --> 00:24:35,000 Това е манипулатор на събитие, така че ще се върне IBAction, 459 00:24:35,000 --> 00:24:38,000 и това е намек за Xcode да кажа, че 460 00:24:38,000 --> 00:24:40,000 това е нещо, което искате да свържете нещо. 461 00:24:40,000 --> 00:24:45,000 Мога да му се даде име, като buttonPressed, точка и запетая. 462 00:24:45,000 --> 00:24:48,000 >> Сега съм обявен за нов метод вътре в моя клас. 463 00:24:48,000 --> 00:24:50,000 Казах, този метод трябва да съществува. 464 00:24:50,000 --> 00:24:53,000 Сега нека да влезе в ViewController.m, 465 00:24:53,000 --> 00:24:56,000 и нека кажем какво може да направи този метод. 466 00:24:56,000 --> 00:25:03,000 Ако започнете да пишете, например, (недействителни) buttonPressed 467 00:25:03,000 --> 00:25:06,000 известие Xcode е много хубаво и autocompletes за мен. 468 00:25:06,000 --> 00:25:09,000 Това е наистина прекрасно. 469 00:25:09,000 --> 00:25:12,000 Забележете, че вътрешността на m файл Също така мога да кажа, невалидни, 470 00:25:12,000 --> 00:25:15,000 и това е, защото това IBAction всъщност не е тип. 471 00:25:15,000 --> 00:25:19,000 Всъщност hashtag някъде да празнота, 472 00:25:19,000 --> 00:25:22,000 и отново, това е само намек за Xcode, която казва 473 00:25:22,000 --> 00:25:25,000 Искам това да бъде манипулатора на събитие, и ще видим защо само една секунда. 474 00:25:25,000 --> 00:25:28,000 Когато този бутон е натиснат Отивам да направя нещо досадно 475 00:25:28,000 --> 00:25:30,000 като се покаже изскачащ прозорец. 476 00:25:30,000 --> 00:25:35,000 >> Да направя, че да създадете нов екземпляр от този клас, наречен UIAlertView, 477 00:25:35,000 --> 00:25:39,000 и това е клас, който Apple пише, че става за показване на досадни изскачащи прозорци. 478 00:25:39,000 --> 00:25:43,000 Наричаме това изскачащ прозорец сигнал, и аз имам две стъпки, не забравяйте, за създаване на този обект. 479 00:25:43,000 --> 00:25:46,000 Първото нещо, което трябва да направите, е да разпределя пространството. 480 00:25:46,000 --> 00:25:48,000 Искам UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Искам да разпределя пространството. Това е първата ми метод. 482 00:25:51,000 --> 00:25:53,000 Следващата ми метод е, искам да го инициализира, 483 00:25:53,000 --> 00:25:58,000 и така имам този голям, дълъг метод, наречен initWithTitle. 484 00:25:58,000 --> 00:26:01,000 Това е в общи линии ще контролира какво е това изскачащ прозорец. 485 00:26:01,000 --> 00:26:04,000 Заглавието на моята изскачащ прозорец може да бъде здрасти. 486 00:26:04,000 --> 00:26:08,000 Посланието на него, може да бъде "Това е IOS. 487 00:26:08,000 --> 00:26:10,000 Нещо делегат, аз не знам какво е това. 488 00:26:10,000 --> 00:26:13,000 Да кажем, че това е нищо. 489 00:26:13,000 --> 00:26:18,000 Сега бутон, който ще се появи, може да се каже нещо като "Това със сигурност е" 490 00:26:18,000 --> 00:26:24,000 и аз наистина не искам никакви други бутони, така че нека да изтриете и затворете скобата. 491 00:26:24,000 --> 00:26:27,000 >> Добре, ще създаде допълнително. Точно така. 492 00:26:27,000 --> 00:26:30,000 Това е как аз да създадете нов изскачащ прозорец. 493 00:26:30,000 --> 00:26:35,000 Ако искам действително да се покаже изскачащ прозорец, искам да викате метода на шоуто. 494 00:26:35,000 --> 00:26:38,000 За да направите това мога да кажа, сигнал и шоу, 495 00:26:38,000 --> 00:26:40,000 и отново, функция за автоматично довършване беше супер хубаво. 496 00:26:40,000 --> 00:26:42,000 Ако съм забравил какво е това, ако аз просто въведена в S, 497 00:26:42,000 --> 00:26:45,000 Да превъртате тук, за да разбера какво е това, 498 00:26:45,000 --> 00:26:48,000 и филтрира добре. 499 00:26:48,000 --> 00:26:52,000 Сега съм създал този нов изскачащ прозорец. 500 00:26:52,000 --> 00:26:55,000 Ще се върнем какво делегат означава по-късно, 501 00:26:55,000 --> 00:26:58,000 и сега искам да кажа, че искам този метод да бъде уволнен 502 00:26:58,000 --> 00:27:01,000 при натискане на бутон, така че аз ще се върна, за да ми сториборд, 503 00:27:01,000 --> 00:27:04,000 и аз искам да отдават тази IBAction. 504 00:27:04,000 --> 00:27:06,000 Първото нещо, което искате да направите, е да натиснете бутона. 505 00:27:06,000 --> 00:27:08,000 Когато натиснете този бутон, искам нещо да се случи. 506 00:27:08,000 --> 00:27:10,000 Аз няма да се задържи контрол. 507 00:27:10,000 --> 00:27:13,000 Отивам да щракнете и плъзнете от бутона 508 00:27:13,000 --> 00:27:15,000 тук, където се казва View Controller. 509 00:27:15,000 --> 00:27:17,000 Ние можем да видим, че добре светва. 510 00:27:17,000 --> 00:27:22,000 >> Ако пусна с мишката Сега имам него тук, където имам някои опции. 511 00:27:22,000 --> 00:27:24,000 Един от тях е събития, които могат да се регистрират. 512 00:27:24,000 --> 00:27:28,000 Това са всички тези методи, декларирани в моето досие ч IBActions. 513 00:27:28,000 --> 00:27:31,000 Това е така, как Xcode знае какво трябва да се появи в този малък списък, 514 00:27:31,000 --> 00:27:33,000 така че това е само намек. 515 00:27:33,000 --> 00:27:37,000 Ако кликнете върху бутона натиснат, аз съм регистриран манипулатор на събитие. 516 00:27:37,000 --> 00:27:41,000 В JavaScript имахме да кажем, че имам някакъв код, който регистрира манипулатор на събитие. 517 00:27:41,000 --> 00:27:43,000 Objective-C, че е наистина толкова лесно. 518 00:27:43,000 --> 00:27:46,000 Ако аз тичам отново 519 00:27:46,000 --> 00:27:49,000 сега, когато натисна бутона ми манипулатор на събитие се случва на огън, 520 00:27:49,000 --> 00:27:51,000 и аз отивам да се получи това изскачащ прозорец. 521 00:27:51,000 --> 00:27:54,000 Супер, супер проста. 522 00:27:54,000 --> 00:27:57,000 >> Ако някога искате да видите всички събития, които се случват, да бъдат регистрирани 523 00:27:57,000 --> 00:28:00,000 на компонент, ако кликнете върху този бутон 524 00:28:00,000 --> 00:28:02,000 и идвам тук, за да дясната страна 525 00:28:02,000 --> 00:28:05,000 първия можете да видите тук мога да направя неща, като вида на бутона, 526 00:28:05,000 --> 00:28:08,000 така че ако искате един от тези, които или добавки бутона за контакт 527 00:28:08,000 --> 00:28:10,000 или нещо такова. 528 00:28:10,000 --> 00:28:13,000 Ако искам да видя всички събития, които са на този бутон 529 00:28:13,000 --> 00:28:16,000 ако дойда по целия път тук от дясната страна 530 00:28:16,000 --> 00:28:19,000 можем да видим тук на събитията, имам всички тези различни събития. 531 00:28:19,000 --> 00:28:23,000 Да натиснете бутона, когато пусна на бутона, когато двойно почукване или каквото, 532 00:28:23,000 --> 00:28:26,000 и една Току-що регистрирани, е това събитие, наречено Touch отвътре, 533 00:28:26,000 --> 00:28:29,000 и казва, че веднага след като пръста ми идва бутона 534 00:28:29,000 --> 00:28:32,000 това събитие се случва на огън, и това е точно това, какво точно се е случило. 535 00:28:32,000 --> 00:28:36,000 Това е вид по подразбиране натиснат бутона събитие. 536 00:28:36,000 --> 00:28:39,000 >> Всякакви въпроси досега? 537 00:28:39,000 --> 00:28:43,000 Добре, това е как можем да започнем да свържете нещата в нашия код 538 00:28:43,000 --> 00:28:46,000 в нещата вътре в нашия интерфейс. 539 00:28:46,000 --> 00:28:49,000 Спомнете си, първото нещо, което трябваше да направя, бе да се намери кода, 540 00:28:49,000 --> 00:28:54,000 и тогава ние кабелен интерфейс на кода, 541 00:28:54,000 --> 00:28:57,000 и там е нашият първи ап. 542 00:28:57,000 --> 00:29:00,000 Добре, това беше наистина страхотно, и ние създадохме този бутон. 543 00:29:00,000 --> 00:29:03,000 Ами ако ние искаме да има, за да се създаде един куп имоти 544 00:29:03,000 --> 00:29:05,000 представляващи тези бутони? 545 00:29:05,000 --> 00:29:08,000 Например, в Tic Tac Toe имам 9 бутоните, 546 00:29:08,000 --> 00:29:11,000 и че ще бъде супер, супер досадно да трябва да влачите и пускате 9 пъти 547 00:29:11,000 --> 00:29:14,000 или ако аз трябваше да направя Tic Tac Toe с 81, вместо на 9 548 00:29:14,000 --> 00:29:17,000 и аз трябваше да влачите и пускате 81 пъти, и че е куц. 549 00:29:17,000 --> 00:29:20,000 Какво можем да направим, вместо да е много подобен на HTML 550 00:29:20,000 --> 00:29:23,000 , когато имахме неща като документи за самоличност и имена и можем да търсим нещата 551 00:29:23,000 --> 00:29:27,000 от личната си карта, има подобно понятие в IOS, наречени тагове. 552 00:29:27,000 --> 00:29:31,000 >> Етикетът е просто уникален цифров идентификатор за компонент. 553 00:29:31,000 --> 00:29:34,000 Ако кажа, че това има етикет на 0, например, 554 00:29:34,000 --> 00:29:38,000 , ако създам един бутон и даде етикет на 0, и ще видим как да го направя само една секунда, 555 00:29:38,000 --> 00:29:41,000 ако искам да получа този бутон мога просто да кажа, че искам да се обадя 556 00:29:41,000 --> 00:29:45,000 на viewWithTag метод на обект тук, 557 00:29:45,000 --> 00:29:48,000 self.view, което представлява текущия екран, например. 558 00:29:48,000 --> 00:29:53,000 Ако аз наричам, че viewWithTag метод, аз отивам да се дръпне назад бутона с етикет 0. 559 00:29:53,000 --> 00:29:58,000 Нека да погледнем на това от сграда Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 Първо, това е сториборд ми. 561 00:30:01,000 --> 00:30:05,000 Съм създал тези 10 UI бутони. 562 00:30:05,000 --> 00:30:07,000 Забележете, всички те са със същия размер. 563 00:30:07,000 --> 00:30:11,000 Ако щракнете върху една от тях и се върна тук по този дясната страна 564 00:30:11,000 --> 00:30:15,000 ще видите коригира шрифта точно тук, така че направих шрифта малко по-голям, 565 00:30:15,000 --> 00:30:19,000 но това, което направих, беше задам този етикет. 566 00:30:19,000 --> 00:30:23,000 Казах, че това има етикет на 1, и това е в горния ляв ъгъл. 567 00:30:23,000 --> 00:30:26,000 >> Сега, ако щракнете върху друг бутон, като този втори тук 568 00:30:26,000 --> 00:30:29,000 сега ще видите, че моят таг е 2. 569 00:30:29,000 --> 00:30:32,000 Всеки един от тези бутони просто има уникален маркер, 570 00:30:32,000 --> 00:30:35,000 и така това е по-късно как съм ще започне взаимодействие 571 00:30:35,000 --> 00:30:38,000 с моя апартамент. 572 00:30:38,000 --> 00:30:40,000 Това е вътрешността на един изглед контролер, 573 00:30:40,000 --> 00:30:42,000 но тук е това, което имаме. 574 00:30:42,000 --> 00:30:44,000 Имаме три свойства. 575 00:30:44,000 --> 00:30:49,000 Първият и последният ще да представляват държавата на моя съвет. 576 00:30:49,000 --> 00:30:53,000 По принцип тази първа е масив, представляващ Xs и Os. 577 00:30:53,000 --> 00:30:57,000 Този другият ни казва, чийто ред е. 578 00:30:57,000 --> 00:31:01,000 Ще забележите, че аз също имам тези неща тук. 579 00:31:01,000 --> 00:31:05,000 Преди, когато ние декларирахме свойства ги даде име и тип. 580 00:31:05,000 --> 00:31:08,000 Можем също така да им се даде някаква допълнителна информация можете да намерите тук. 581 00:31:08,000 --> 00:31:11,000 Това първо казва nonatomic, и какво казва 582 00:31:11,000 --> 00:31:16,000 е основно само едно нещо никога няма да се опитвате да отворите тази променлива в даден момент. 583 00:31:16,000 --> 00:31:19,000 Можете да го направите по-сложни приложения, които са многонишковите 584 00:31:19,000 --> 00:31:22,000 и да се върнем в Scratch имахме различни теми, 585 00:31:22,000 --> 00:31:25,000 и различни спрайтове да правя различни неща по едно и също време. 586 00:31:25,000 --> 00:31:29,000 >> Ако това не е случай, който не е в нещо, което ще се търсят в 587 00:31:29,000 --> 00:31:33,000 ако кажем, nonatomic всъщност се случва да направим нещата малко по-бързо. 588 00:31:33,000 --> 00:31:37,000 Ние също имаме това нещо, наречено възлага, силна или слаба. 589 00:31:37,000 --> 00:31:40,000 Това възложи просто казва, че това е стандартен тип. 590 00:31:40,000 --> 00:31:43,000 Това не е обект или указател, защото това е просто булев 591 00:31:43,000 --> 00:31:46,000 така булев е построен в Objective-C. 592 00:31:46,000 --> 00:31:49,000 Това казва, че не се опитват да направят нещо фантазия с указатели тук. 593 00:31:49,000 --> 00:31:51,000 Това е редовен стар множител. 594 00:31:51,000 --> 00:31:54,000 Силни и слаби, тази слаба казва, че всъщност 595 00:31:54,000 --> 00:31:57,000 Искам това да бъдат насочени към нещо в контролера. 596 00:31:57,000 --> 00:32:00,000 Аз няма да разпределят или първоначален това сам. 597 00:32:00,000 --> 00:32:04,000 Interface Builder, когато стартирате приложението, ще се справят с всичко, което инициализация. 598 00:32:04,000 --> 00:32:07,000 Ако кажа, слаб, че казва, че някой друг ще бъде създаването на този. 599 00:32:07,000 --> 00:32:09,000 Ако кажа, че силен, това се казва, че аз отивам да бъде 600 00:32:09,000 --> 00:32:12,000 това е създаването на този форум обект, 601 00:32:12,000 --> 00:32:14,000 И така, ето тук имам още няколко методи, 602 00:32:14,000 --> 00:32:18,000 например, действие, когато се натисне бутона игра, 603 00:32:18,000 --> 00:32:20,000 за действие в случаите, когато някой от другите бутони са натиснати, 604 00:32:20,000 --> 00:32:23,000 и така нататък. 605 00:32:23,000 --> 00:32:26,000 >> Ние няма да влязат в твърде голяма част от логиката на Tic Tac Toe, 606 00:32:26,000 --> 00:32:30,000 въпреки че това е много вълнуващо, но нека да разгледаме 607 00:32:30,000 --> 00:32:33,000 някои от нещата, които можем да направим вътре в IOS. 608 00:32:33,000 --> 00:32:35,000 Този нов метод на играта ще бъде уволнен 609 00:32:35,000 --> 00:32:37,000 всеки път, когато натиснете на нов бутон игра. 610 00:32:37,000 --> 00:32:41,000 Да свържете това аз просто дойде да ми сториборд. 611 00:32:41,000 --> 00:32:43,000 Аз кликнали върху нова игра. 612 00:32:43,000 --> 00:32:47,000 Ако дойда тук надясно, виждам, че 613 00:32:47,000 --> 00:32:50,000 Докосване Вътре е свързан към newGame метод. 614 00:32:50,000 --> 00:32:53,000 Ето защо това се случва да ме уволнят. 615 00:32:53,000 --> 00:32:56,000 Методът newGame ще направи някакъв набор. 616 00:32:56,000 --> 00:32:59,000 Ще кажа, че искам да изчистите състоянието на борда. 617 00:32:59,000 --> 00:33:01,000 Това е хубава метод за непостоянен масиви. 618 00:33:01,000 --> 00:33:03,000 Това ще да кажа, че сега е ред на X, 619 00:33:03,000 --> 00:33:07,000 и сега отивам да се възползват на този viewWithTag нещо. 620 00:33:07,000 --> 00:33:11,000 >> Знам, че моите бутони имат таговете 1-9, 621 00:33:11,000 --> 00:33:13,000 и това е нещо, което произволно качват. 622 00:33:13,000 --> 00:33:15,000 Ако искам да настроите текста на всеки бутон, за да бъдат празни 623 00:33:15,000 --> 00:33:17,000 защото аз току-що започна нова игра и аз не искам 624 00:33:17,000 --> 00:33:20,000 Xs или операционна система, за да бъдат оставени над мога да направя това. 625 00:33:20,000 --> 00:33:24,000 Мога да кажа искам оглед с етикет, 1, 2, 3, 4 и т.н.. 626 00:33:24,000 --> 00:33:27,000 Това ще дръпне различен бутон всеки път. 627 00:33:27,000 --> 00:33:30,000 Тук аз отивам да се хвърли на UIButton. 628 00:33:30,000 --> 00:33:33,000 Точно както бихме могли да хвърлят цели числа да плува и обратно 629 00:33:33,000 --> 00:33:37,000 това казва, че аз искам да хвърлям на UIButton. 630 00:33:37,000 --> 00:33:40,000 Това означава, че от това ще бъде * UIButton 631 00:33:40,000 --> 00:33:43,000 защото на указатели, но не се притеснявайте, те не са страшни вече. 632 00:33:43,000 --> 00:33:47,000 >> След като имам този бутон Отивам да се обадя метод върху него. 633 00:33:47,000 --> 00:33:50,000 Този метод се нарича setTitle forState, така че това казва 634 00:33:50,000 --> 00:33:53,000 Искам да настроите текста на бутона, за да бъде празен низ, 635 00:33:53,000 --> 00:33:57,000 и искам тя да бъде празен низ, когато не е натиснат. 636 00:33:57,000 --> 00:34:01,000 Ако аз съм с този метод, че мога да променя текста на бутона 637 00:34:01,000 --> 00:34:04,000 веднага след като някой го удари, но ние искаме да кажем, когато бутонът е просто седеше там 638 00:34:04,000 --> 00:34:07,000 Искам текста да бъде празен. 639 00:34:07,000 --> 00:34:10,000 И накрая, ние отиваме да се инициализира моя съвет, 640 00:34:10,000 --> 00:34:12,000 и аз ще да кажа, че всичко в момента е на 0, 641 00:34:12,000 --> 00:34:15,000 така че това членовете на борда неизменен е непостоянен масив, 642 00:34:15,000 --> 00:34:21,000 което означава, че може да се обадите на addObject метод и само на 0 вътре в него. 643 00:34:21,000 --> 00:34:23,000 Ето какво се случва, когато създам нова игра. 644 00:34:23,000 --> 00:34:25,000 >> Нека да погледнем в друга. 645 00:34:25,000 --> 00:34:28,000 Този метод тук е IBAction, че ще трябва да се натисне 646 00:34:28,000 --> 00:34:31,000 всеки път, когато един от тези квадратчета е натиснат. 647 00:34:31,000 --> 00:34:33,000 Сега имаме някои Tic Tac Toe логика тук. 648 00:34:33,000 --> 00:34:36,000 Разбера чий ред е, 649 00:34:36,000 --> 00:34:39,000 и на тази база ние или постави X или O, 650 00:34:39,000 --> 00:34:43,000 но ние забелязваме, че сме повторно използване на същата тази манипулатора на събитие 651 00:34:43,000 --> 00:34:45,000 за всеки един от тези бутони. 652 00:34:45,000 --> 00:34:49,000 Това означава, че не разполагат с метод за горния ляв бутон, 653 00:34:49,000 --> 00:34:52,000 различен метод за долния десен бутон, въпреки че бих могъл да направя това. 654 00:34:52,000 --> 00:34:54,000 Това не би наистина да е добър дизайн. 655 00:34:54,000 --> 00:34:57,000 Какво правя тук, е, че всъщност ще определи 656 00:34:57,000 --> 00:35:00,000 етикет на бутон е натиснат. 657 00:35:00,000 --> 00:35:04,000 Забелязвате ли, че тази игра метод приема само един аргумент. 658 00:35:04,000 --> 00:35:07,000 Тя се нарича изпращач, и какво подателя е подател ще 659 00:35:07,000 --> 00:35:10,000 представлява точно това, което е предприето действие при. 660 00:35:10,000 --> 00:35:15,000 Ако натиснете бутон, този подател ще бъде, че UIButton 661 00:35:15,000 --> 00:35:18,000 , че аз всъщност пресовани, така че това означава, че тази UIButton 662 00:35:18,000 --> 00:35:20,000 има етикет, защото съм създал етикет. 663 00:35:20,000 --> 00:35:23,000 >> Ако искате да получите най-етикет може просто да се каже, 664 00:35:23,000 --> 00:35:26,000 Искам етикет на подателя, 665 00:35:26,000 --> 00:35:28,000 и отново, аз току-що го излят на UIButton. 666 00:35:28,000 --> 00:35:32,000 Случайно знам, че подателят ще бъде UIButton. 667 00:35:32,000 --> 00:35:34,000 Тя не винаги трябва да бъде UIButton. 668 00:35:34,000 --> 00:35:36,000 Аз, например, може да регистрира същия манипулатора на събитие 669 00:35:36,000 --> 00:35:38,000  за един за един бутон, за плъзгач. 670 00:35:38,000 --> 00:35:40,000 В този случай, аз знам, че те са всички бутони, така че аз ще кажа 671 00:35:40,000 --> 00:35:43,000 Искам това да бъде един бутон, а след това да получите етикет, 672 00:35:43,000 --> 00:35:48,000 и от етикет Сега знам къде съм вътре на борда. 673 00:35:48,000 --> 00:35:51,000 Тогава може просто да определят или X или O, да въртиш свой ред, 674 00:35:51,000 --> 00:35:54,000 провери кой е спечелил, и т.н.. 675 00:35:54,000 --> 00:35:59,000 >> Всички въпроси по този доколкото? 676 00:35:59,000 --> 00:36:02,000 Добре, кода, който е публикувал онлайн, ние не искаме да влязат в твърде много 677 00:36:02,000 --> 00:36:06,000 на Tic Tac Toe логика, но сега можете да видите, че наистина 678 00:36:06,000 --> 00:36:09,000 Всичко, което правим е, че ние цикъл с този масив, 679 00:36:09,000 --> 00:36:13,000 така че ние имаме няколко за примки тук, и ние сме в сравнение с 680 00:36:13,000 --> 00:36:18,000 имаме мач във всички редове, един мач в колона или нещо подобно. 681 00:36:18,000 --> 00:36:21,000 За да стартирате това приложение, ако натиснете един от тези бутони 682 00:36:21,000 --> 00:36:24,000 че играта метод е бил уволнен, така че това означава, че просто да настроите 683 00:36:24,000 --> 00:36:31,000 бутона, за да бъде X, така че сега този бутон ще бъде О, и така нататък, 684 00:36:31,000 --> 00:36:35,000 и така, че как започваме да си взаимодействат с тази единствена приложение на страницата. 685 00:36:35,000 --> 00:36:38,000 >> Ние ще публикуваме кода, така че не се колебайте да чета, че, 686 00:36:38,000 --> 00:36:43,000 но нека поговорим за някои приложения, които са повече от само една страница. 687 00:36:43,000 --> 00:36:47,000 Толкова вълнуващо, като Tic Tac Toe беше много приложения в рамките на ЗИ 688 00:36:47,000 --> 00:36:50,000 вид на тези тренировка надолу нещата с множество екрани. 689 00:36:50,000 --> 00:36:54,000 Първата концепция, че ние ще трябва да говорим за протоколи, 690 00:36:54,000 --> 00:36:57,000 и протокол е просто набор от методи 691 00:36:57,000 --> 00:36:59,000 , които могат да обещаят да се определи. 692 00:36:59,000 --> 00:37:02,000 Ако създам този нов протокол с два метода, тази първа, 693 00:37:02,000 --> 00:37:05,000 ако типът на връщане е нищожен, аз го наричат ​​Foo. 694 00:37:05,000 --> 00:37:07,000 Той не възприема аргументи. Имам друг метод. 695 00:37:07,000 --> 00:37:11,000 Тя връща Int. Обадих лента и приема само един аргумент. 696 00:37:11,000 --> 00:37:14,000 Всичко това протокол е, че се нарича SomeProtocol тук, 697 00:37:14,000 --> 00:37:19,000 това е набор от неща, които някой може да изпълнява. 698 00:37:19,000 --> 00:37:22,000 Не съм вътре в този протокол каза какво Foo. 699 00:37:22,000 --> 00:37:26,000 Вместо това, аз съм просто казвам, че би могъл да определи Foo ако искате да. 700 00:37:26,000 --> 00:37:30,000 Ако аз съм създаване на изглед към контролер или създаване на класа 701 00:37:30,000 --> 00:37:33,000 Мога да вътре от този клас обещава да приложи 702 00:37:33,000 --> 00:37:40,000 някои от тези методи, така например, ако кажа, 703 00:37:40,000 --> 00:37:43,000 сега казва, че аз съм на обещанието си, че вътре 704 00:37:43,000 --> 00:37:50,000 от този клас оглед контролер ще има дефиниции за Foo както и бар. 705 00:37:50,000 --> 00:37:52,000 >> Защо е полезно? 706 00:37:52,000 --> 00:37:55,000 Много от компонентите вътре на ЗИ се възползват от тази 707 00:37:55,000 --> 00:37:58,000 дизайн модел, наречен делегация, и какво делегация казва 708 00:37:58,000 --> 00:38:01,000 е, че, например, ако имам текстово поле 709 00:38:01,000 --> 00:38:04,000 и има някои събития, които могат да бъдат регистрирани в рамките на моя текстовото поле, 710 00:38:04,000 --> 00:38:07,000 вместо създаване на отделни събития, това, което мога да направя е, че може да се каже, 711 00:38:07,000 --> 00:38:10,000 делегат на това текстово поле ще бъде някакъв предмет. 712 00:38:10,000 --> 00:38:13,000 Когато казвам, че това е делегат сега това означава, че 713 00:38:13,000 --> 00:38:16,000 когато някое събитие би са били изстреляни в текстовото поле 714 00:38:16,000 --> 00:38:18,000 вместо да се налага да го регистрират или нещо подобно 715 00:38:18,000 --> 00:38:21,000 това е просто ще се обадя на метод за делегата. 716 00:38:21,000 --> 00:38:24,000 Например, вътре в текстовото поле ми имам метод за когато натиснете 717 00:38:24,000 --> 00:38:27,000 извършва бутона в долния десен ъгъл, 718 00:38:27,000 --> 00:38:30,000 и така, отколкото регистриране на манипулатора на събитие, което мога да кажа е 719 00:38:30,000 --> 00:38:34,000 текстовото поле, тук е един обект, който искате да се обадите на метод за 720 00:38:34,000 --> 00:38:37,000 всеки път, когато някой натисне бутона Готово, 721 00:38:37,000 --> 00:38:40,000 и това означава, че този обект трябва да се приложат някои протокол 722 00:38:40,000 --> 00:38:45,000 , който казва, обещавам да се определи, че извършва действия бутона, 723 00:38:45,000 --> 00:38:47,000 защото, ако не определят този метод и натиснете Готово, 724 00:38:47,000 --> 00:38:49,000 то тогава ще да бъде объркваща. 725 00:38:49,000 --> 00:38:55,000 >> Нека да разгледаме един пример. 726 00:38:55,000 --> 00:38:58,000 Тук аз просто имат едно текстово поле, 727 00:38:58,000 --> 00:39:04,000 и едно от свойствата на това текстово поле тук на тази дясната страна на делегата. 728 00:39:04,000 --> 00:39:06,000 Това е собственост на класа. 729 00:39:06,000 --> 00:39:09,000 Това, което направих тук е, че контрол се натисне, и аз се измъкнат от това място тук 730 00:39:09,000 --> 00:39:13,000 с оглед контролер, и че казва сега делегат на това текстово поле 731 00:39:13,000 --> 00:39:18,000 ще бъде изглед на контролера. 732 00:39:18,000 --> 00:39:20,000 Това означава, че когато се случват някои действия, отколкото да се регистрирате 733 00:39:20,000 --> 00:39:25,000 работещи на отделни събития, които искам да ги изпратите на делегата. 734 00:39:25,000 --> 00:39:28,000 Сега нека да разгледаме по мое мнение контролер. 735 00:39:28,000 --> 00:39:32,000 Вътре на файла з съм дал обещание. 736 00:39:32,000 --> 00:39:36,000 Съм обещал да приложи някои методи в рамките на този протокол 737 00:39:36,000 --> 00:39:38,000 UITextFieldDelegate, и отново, 738 00:39:38,000 --> 00:39:42,000 това е просто някакъв списък на някои неща, които мога да избирам за изпълнение. 739 00:39:42,000 --> 00:39:46,000 >> Ако дойда тук, в моя m файл, Реализирал съм един такъв метод. 740 00:39:46,000 --> 00:39:49,000 Съм го наричат ​​textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 защото това е това, което се нарича в рамките на протокола. 742 00:39:52,000 --> 00:39:57,000 И сега всеки път, когато натиснете бутона Готово вътрешността на този текст поле 743 00:39:57,000 --> 00:40:00,000 това е, което ще се нарича, така че аз не се регистрирате манипулатора на събитие. 744 00:40:00,000 --> 00:40:03,000 Свързали делегат, и когато това събитие е уволнен 745 00:40:03,000 --> 00:40:08,000 това е методът, който ще се нарича, така че ако дойда тук да ми сториборд и го пуснете 746 00:40:08,000 --> 00:40:11,000 а това е натоварване можем да видим какво прави това. 747 00:40:11,000 --> 00:40:13,000 На екрана ми има две неща. 748 00:40:13,000 --> 00:40:16,000 Имам това текстово поле, и аз имам този етикет. 749 00:40:16,000 --> 00:40:19,000 Аз съм просто казвам, че искам текста на този етикет 750 00:40:19,000 --> 00:40:23,000 да бъде равна какъвто и да е потребител написали във вътрешността на текстовото поле. 751 00:40:23,000 --> 00:40:26,000 Този следващия ред тук, е просто метод, който Обаждам 752 00:40:26,000 --> 00:40:29,000 полето за текст, който казва, че искате да скриете клавиатурата. 753 00:40:29,000 --> 00:40:33,000 Това е само произволен метод, който Apple избра. 754 00:40:33,000 --> 00:40:38,000 >> Отново, преди да съм направил всичко, което имах, за да свържете всичко, така че аз за пръв път тук. 755 00:40:38,000 --> 00:40:42,000 От гледна контролер плъзнете текстовото поле. 756 00:40:42,000 --> 00:40:46,000 Пусна и аз мога да видя тук, че мога да направя това имущество текстово поле 757 00:40:46,000 --> 00:40:49,000 тъй като тук в контролера съм определил имот 758 00:40:49,000 --> 00:40:52,000 това е IBOutlet на текстово поле. 759 00:40:52,000 --> 00:40:55,000 Това казва, че мога да свържем този имот 760 00:40:55,000 --> 00:40:59,000 на текстово поле в моя UI. 761 00:40:59,000 --> 00:41:03,000 Сега, когато щракнете върху това да започнете да пишете. 762 00:41:03,000 --> 00:41:06,000 Сега, ако щракнете върху бутона Готово това се случва на огън 763 00:41:06,000 --> 00:41:08,000 случай, че сега мога да се отговори на. 764 00:41:08,000 --> 00:41:10,000 Няма събитие хендлери. 765 00:41:10,000 --> 00:41:13,000 Ето как отговори на бутона извършва. 766 00:41:13,000 --> 00:41:15,000 Направи ли смисъл? 767 00:41:15,000 --> 00:41:20,000 >> Това не е дизайн модел, че не може някога да намерят себе си 768 00:41:20,000 --> 00:41:23,000 създаването на своя собствен протокол, но просто знам, че някои 769 00:41:23,000 --> 00:41:27,000 различните компоненти IOS регистрирайте се прояви по различни начини. 770 00:41:27,000 --> 00:41:29,000 Бутони, например, използват тези IBActions. 771 00:41:29,000 --> 00:41:32,000 Текстови полета, от друга страна, ще използваме делегати. 772 00:41:32,000 --> 00:41:36,000 Ние можем да видим и да разгледаш всички, че във вътрешността на документацията. 773 00:41:36,000 --> 00:41:41,000 Между другото, всъщност има един тон неща UI, построен в IOS за вас, 774 00:41:41,000 --> 00:41:46,000 Така например, начина, по който аз направих, които твърдят, че в долния десен ъгъл 775 00:41:46,000 --> 00:41:48,000 избрах този текстовото поле. 776 00:41:48,000 --> 00:41:50,000 Аз дойдох тук. 777 00:41:50,000 --> 00:41:53,000 Аз превъртат малко, за да се върнете ключа, 778 00:41:53,000 --> 00:41:56,000 и аз действително могат да направят цял ​​куп неща, като, ако искам да кажа 779 00:41:56,000 --> 00:42:00,000 спешно повикване, вместо да мога да направя това, което е напълно случаен, 780 00:42:00,000 --> 00:42:02,000 и аз не знам защо има вградена в бутона за спешни повиквания, 781 00:42:02,000 --> 00:42:06,000 но там, той казва спешно повикване в наистина малки букви. 782 00:42:06,000 --> 00:42:08,000 Ето. 783 00:42:08,000 --> 00:42:12,000 >> Определено проучи всички тези различни варианти в IOS. 784 00:42:12,000 --> 00:42:14,000 Всички въпроси на делегатите? 785 00:42:14,000 --> 00:42:18,000 Отново интересен дизайн модел, че трябва да сте наясно. 786 00:42:18,000 --> 00:42:22,000 Добре, нека следващия път да погледнем в таблици. 787 00:42:22,000 --> 00:42:26,000 Табличен изглед е основно, че списък на статии, които са навсякъде в IOS. 788 00:42:26,000 --> 00:42:29,000 Когато сте обръщане чрез всичките си контакти, което търсите в 789 00:42:29,000 --> 00:42:34,000 създаването страница, и този вид на списък на нещата, се нарича табличен изглед. 790 00:42:34,000 --> 00:42:37,000 Прилагане на табличен изглед в IOS е доста проста. 791 00:42:37,000 --> 00:42:41,000 Вместо да се правят клас, който се спуска от тази UIViewController 792 00:42:41,000 --> 00:42:44,000 като сме направили,, преди ние просто трябва да се каже, отколкото 793 00:42:44,000 --> 00:42:46,000 всичко UIViewController се искам да направя, 794 00:42:46,000 --> 00:42:50,000 Казвам всичко, което се UITableViewController искам да направя, 795 00:42:50,000 --> 00:42:54,000 , така че просто добавя някои допълнителни неща, които са напълно направил за нас. 796 00:42:54,000 --> 00:42:58,000 Трябва да направим много малко всъщност да попълнят празните места вътре в таблицата. 797 00:42:58,000 --> 00:43:02,000 >> За да се покаже таблицата, трябва да отговори на някои въпроси. 798 00:43:02,000 --> 00:43:06,000 Първият въпрос, който трябва да се отговори, е колко секции са в таблицата? 799 00:43:06,000 --> 00:43:08,000 Когато сте обръщане чрез контакти App ще забележите, че това е вид на 800 00:43:08,000 --> 00:43:12,000 организирана от спомагателната система, тогава имате Bs, и това малко под заглавието. 801 00:43:12,000 --> 00:43:14,000 Всяка от тях е наречен раздел. 802 00:43:14,000 --> 00:43:16,000 Вие може или не може да се нуждаем от тях. 803 00:43:16,000 --> 00:43:19,000 Първото нещо, което трябва да направите, е да реализира метод 804 00:43:19,000 --> 00:43:22,000 наречен tableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Това просто връща колко раздели, 806 00:43:25,000 --> 00:43:29,000 така че това може да се каже, да върне едно, ако имате една голяма цел таблицата. 807 00:43:29,000 --> 00:43:33,000 Следващият въпрос, който, че IOS трябва да знае, е колко реда имаш? 808 00:43:33,000 --> 00:43:36,000 Например, вие сте обръщане чрез табличен изглед. 809 00:43:36,000 --> 00:43:39,000 Имате определен брой песни, които търсите или фиксиран брой контакти. 810 00:43:39,000 --> 00:43:41,000 Ако ти си, разбира се, не е много, 811 00:43:41,000 --> 00:43:44,000 и така, че как IOS знае колко клетки за показване. 812 00:43:44,000 --> 00:43:46,000 >> Отново, това може да се каже, нещо като завръщане 3. 813 00:43:46,000 --> 00:43:49,000 Моят табличен изглед има три реда. 814 00:43:49,000 --> 00:43:52,000 И накрая, Ios трябва да знае това, което изглежда като всяка клетка, 815 00:43:52,000 --> 00:43:54,000 така че това, което всъщност се случва да направите е да се обадите на този метод, 816 00:43:54,000 --> 00:43:57,000 този tableView: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Ще се обадя на този метод при всяка една клетка в рамките на вашата трапеза. 818 00:44:01,000 --> 00:44:03,000 Как не го знае колко пъти да го наречем? 819 00:44:03,000 --> 00:44:06,000 Е, ти го каза вътрешността на броя на редовете в раздел. 820 00:44:06,000 --> 00:44:08,000 Отиваме да се обадя на всеки един от нашите клетки, 821 00:44:08,000 --> 00:44:11,000 и в рамките на това е мястото, където можете да правите неща, като 822 00:44:11,000 --> 00:44:16,000 настроите текста или да ви кажа какво е това малко синия бутон от дясната страна. 823 00:44:16,000 --> 00:44:19,000 Модел за получаване на тези клетки, отиваме да използвате този метод 824 00:44:19,000 --> 00:44:22,000 нарича dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C е всъщност много добре познати за нелепо продължителността на техния метод имена, 826 00:44:29,000 --> 00:44:32,000 и това е наистина хубава случая в точка например. 827 00:44:32,000 --> 00:44:37,000 Този метод е това, просто казва, искам да ми дадеш една клетка. 828 00:44:37,000 --> 00:44:39,000 Просто нещо IOS. 829 00:44:39,000 --> 00:44:41,000 Ако имате нещо като 100 000 песни на вашия IPod 830 00:44:41,000 --> 00:44:45,000 какво IOS не искате да направите, е да разпредели 100 000 клетки, 831 00:44:45,000 --> 00:44:48,000 защото, ако сте в горната част на списъка, ти наистина трябва да бъде заделена памет 832 00:44:48,000 --> 00:44:51,000 клетка, която е 99 000 реда надолу? 833 00:44:51,000 --> 00:44:55,000 Не, защото, както сте се придвижите можете да разпределят като отидеш заедно. 834 00:44:55,000 --> 00:44:57,000 Това се прави за вас. 835 00:44:57,000 --> 00:44:59,000 Не е нужно да се притеснявате за всичко, което глупави неща изпълнение. 836 00:44:59,000 --> 00:45:02,000 Всичко, което казваш, е ти се обадя този метод dequeueReusableCellWithIdentifier, 837 00:45:02,000 --> 00:45:06,000 а това, добре, ако имате нужда да отивам да се създаде нова клетка за вас. 838 00:45:06,000 --> 00:45:09,000 >> Но ако сте в дъното на таблицата и вече сте разпределени някои клетки 839 00:45:09,000 --> 00:45:12,000 в горната част на таблицата, че наистина не започваш да се наложи в скоро време 840 00:45:12,000 --> 00:45:15,000 Аз ще ви дам един от тези, гърба, вместо за разпределяне на нова, 841 00:45:15,000 --> 00:45:17,000 и така това е хубаво загриженост изпълнение. 842 00:45:17,000 --> 00:45:21,000 Вие не трябва да се разпределят клетки себе си. 843 00:45:21,000 --> 00:45:23,000 Това ще ви даде една клетка. 844 00:45:23,000 --> 00:45:25,000 Ще се върне към вас обект клетка. 845 00:45:25,000 --> 00:45:28,000 След като сте обект на клетка, която може да направи неща, които да. 846 00:45:28,000 --> 00:45:32,000 Можете да настроите текста на клетката с този имот, наречен текста на етикета. 847 00:45:32,000 --> 00:45:36,000 Може да се добави, че стрелката на правото или на някои други случайни неща 848 00:45:36,000 --> 00:45:41,000 с този друг имот, наречен accessoryType, и така нататък, и така нататък. 849 00:45:41,000 --> 00:45:46,000 >> Нека хвърлим един поглед към действително прилагане табличен изглед. 850 00:45:46,000 --> 00:45:49,000 Когато съм създал този проект 851 00:45:49,000 --> 00:45:53,000 вместо да каже един изглед прилагане Аз всъщност дойдох тук 852 00:45:53,000 --> 00:45:57,000 приложение за майстор-подробно и по същество това отговаря на поща App 853 00:45:57,000 --> 00:46:01,000 на IPAD с изгледа на таблицата в ляво и след това съдържанието в дясно. 854 00:46:01,000 --> 00:46:07,000 На Ipod или iPhone това ще да отговаря на един изглед на таблицата. 855 00:46:07,000 --> 00:46:10,000 Това е мястото, където аз имам стартер код. 856 00:46:10,000 --> 00:46:13,000 >> Нека първо да погледнем в сценария. 857 00:46:13,000 --> 00:46:15,000 Всичко това е направено за мен, общо взето създаден. 858 00:46:15,000 --> 00:46:18,000 Тази лента за навигация ми показа какво клетки например може да изглежда така, 859 00:46:18,000 --> 00:46:22,000 и мога да щракнете два пъти върху това, промени заглавието. 860 00:46:22,000 --> 00:46:25,000 Всякакви други опасения UI мога да се справя. 861 00:46:25,000 --> 00:46:27,000 Ред, който изглежда много проста. 862 00:46:27,000 --> 00:46:30,000 Вместо да се казва, това е UIViewController ние сме вече, че това е 863 00:46:30,000 --> 00:46:35,000 TableViewController, така че ние знаем, че искаме да се обадя на всички тези методи за маса. 864 00:46:35,000 --> 00:46:38,000 След Искам да създам един имот, който ще представлява 865 00:46:38,000 --> 00:46:40,000 неща вътре на моята маса. 866 00:46:40,000 --> 00:46:43,000 Тази таблица ще произволно показване 867 00:46:43,000 --> 00:46:46,000 списък на плодове, и затова трябва да се създаде някакъв масив 868 00:46:46,000 --> 00:46:49,000 , в който мога да вмъкнете плодове. 869 00:46:49,000 --> 00:46:52,000 Вътре изпълнението файл първото нещо, което искам да направя 870 00:46:52,000 --> 00:46:55,000 е, искам да направя, съм сигурен, че се инициализира този масив. 871 00:46:55,000 --> 00:46:58,000 >> Казах заделянето на памет първоначален, създаден ми плодове масив, 872 00:46:58,000 --> 00:47:03,000 и аз съм добавяне на четири неща към него, една от които е много по-спорен от другата 3. 873 00:47:03,000 --> 00:47:06,000 И сега имам масив с размер 4. 874 00:47:06,000 --> 00:47:08,000 Ние сме като се разклаща в CS50. 875 00:47:08,000 --> 00:47:11,000 Сега имам масив с размер 4. 876 00:47:11,000 --> 00:47:13,000 Сега отивам да започна да отговарям на тези въпроси, и всъщност, 877 00:47:13,000 --> 00:47:16,000 когато създадох това приложение всичко това вече беше направил за мен. 878 00:47:16,000 --> 00:47:19,000 Не трябва да въведете броя на секциите в табличен изглед. 879 00:47:19,000 --> 00:47:22,000 Той вече е бил там, и аз съм попълване на бланки. 880 00:47:22,000 --> 00:47:24,000 Колко секции имам? 881 00:47:24,000 --> 00:47:26,000 One. Всичко е готово. 882 00:47:26,000 --> 00:47:28,000 Колко редове имам? 883 00:47:28,000 --> 00:47:31,000 Ами, аз имам един ред за всеки плод, така че този брой 884 00:47:31,000 --> 00:47:34,000 е собственост на масив, който казва, колко е голям? 885 00:47:34,000 --> 00:47:36,000 Това е колко реда имам. 886 00:47:36,000 --> 00:47:42,000 И накрая, трябва да ти кажа, какво означава всяка клетка изглежда? 887 00:47:42,000 --> 00:47:46,000 Отивам да кажа dequeueReusableCellWithIdentifier. 888 00:47:46,000 --> 00:47:48,000 >> Отново, това е вече написана за мен. 889 00:47:48,000 --> 00:47:51,000 Аз не трябва да правя така, и аз искам да се върна 890 00:47:51,000 --> 00:47:54,000 тази клетка на това място. 891 00:47:54,000 --> 00:47:57,000 Не забравяйте, че ние призоваваме този същия метод на всяка една клетка, 892 00:47:57,000 --> 00:48:01,000 и този аргумент тук, този аргумент indexPath, 893 00:48:01,000 --> 00:48:03,000 казва какъв ред съм инча 894 00:48:03,000 --> 00:48:05,000 Ако кажа, че indexPath.row тук 895 00:48:05,000 --> 00:48:09,000 това ще бъде 0, а след това ще бъде едно, а след това тя ще бъде 2, и това е, така че аз знам 896 00:48:09,000 --> 00:48:11,000 каква клетка аз съм в момента показва. 897 00:48:11,000 --> 00:48:15,000 Искам да настроите текста на клетката, като се използва този имот textLabel 898 00:48:15,000 --> 00:48:19,000 да влезем вътре ми плодове масив и се 899 00:48:19,000 --> 00:48:21,000 обект, съответстващ на всеки ред. 900 00:48:21,000 --> 00:48:24,000 Ако това е низ, аз съм сега определяне 901 00:48:24,000 --> 00:48:28,000 текста имот в низ. 902 00:48:28,000 --> 00:48:30,000 Мога да направя нещо друго. 903 00:48:30,000 --> 00:48:32,000 Също така мога да се регистрирате манипулатор на събитие за всяка от клетките, 904 00:48:32,000 --> 00:48:35,000 така че когато докоснете всяка от тези клетки 905 00:48:35,000 --> 00:48:39,000 това didSelectRowAtIndexPath, това ще да бъдат поканени за мен, 906 00:48:39,000 --> 00:48:42,000 така че просто чрез определяне на това сега мога да се справя, което се случва 907 00:48:42,000 --> 00:48:46,000 когато докоснете клетка, и отново, ние сме предаване, в което е подслушван клетка 908 00:48:46,000 --> 00:48:50,000 така че да можем да го използвате отново същата тази манипулатора на събитие за всички от нашите клетки. 909 00:48:50,000 --> 00:48:53,000 >> Отново, това е нещо, IOS прави за мен. 910 00:48:53,000 --> 00:48:55,000 Да се ​​показват и друг досадни изскачащи 911 00:48:55,000 --> 00:48:59,000 които просто казва, че сте избрали нещо, когато това нещо 912 00:48:59,000 --> 00:49:04,000 ще бъде обект ред. 913 00:49:04,000 --> 00:49:10,000 Когато го стартирам това, аз отивам да получите този хубав изглед на таблица 914 00:49:10,000 --> 00:49:14,000 с по един ред за всеки един от тези плодове, и ако се докоснете един 915 00:49:14,000 --> 00:49:16,000 тя ми казва, какво се е случило. 916 00:49:16,000 --> 00:49:21,000 Направи ли смисъл? 917 00:49:21,000 --> 00:49:24,000 Нека изградим малко по-сложно от един апартамент, 918 00:49:24,000 --> 00:49:28,000 колкото кликнете сте избрали домат. 919 00:49:28,000 --> 00:49:31,000 В приятна част за storyboarding 920 00:49:31,000 --> 00:49:35,000 е, че не само ще ни помогне да дизайн екрани поотделно, 921 00:49:35,000 --> 00:49:38,000 тя също ще ни помогне да свързват приложение цялата ни 922 00:49:38,000 --> 00:49:42,000 окончателното приложение ще бъде изграждането е тази хубава спортни новини четец 923 00:49:42,000 --> 00:49:45,000 и така ще има множество екрани, и затова всъщност може да представлява 924 00:49:45,000 --> 00:49:48,000 всеки един от тези многобройни екрани на монтажната маса, 925 00:49:48,000 --> 00:49:52,000 и аз мога да я увеличите и виж моя апартамент от високо ниво. 926 00:49:52,000 --> 00:49:55,000 >> За да се създаде нов елемент вътре на моята сториборд 927 00:49:55,000 --> 00:49:59,000 това е много проста вътрешността на Interface Builder. 928 00:49:59,000 --> 00:50:01,000 Ако искате да добавите друг екран, за това, например, 929 00:50:01,000 --> 00:50:06,000 Мога да я увеличите с щипка увеличение, което Apple обича толкова много, 930 00:50:06,000 --> 00:50:09,000 и тук, преди да търся за един бутон 931 00:50:09,000 --> 00:50:12,000 и аз влачите и пускате бутона 932 00:50:12,000 --> 00:50:15,000 ако искате да създадете нов екран, всъщност може да просто да плъзнете и пуснете 933 00:50:15,000 --> 00:50:19,000 целия контролер изглед, така че ако мога да взема този, отбий тук, 934 00:50:19,000 --> 00:50:23,000 Ей, има друг екран, и така сега да използваме този файл сториборд 935 00:50:23,000 --> 00:50:26,000 Мога да имам всички екрани вътре в моя апартамент, и мога да я увеличите 936 00:50:26,000 --> 00:50:28,000 и да видим как те си взаимодействат. 937 00:50:28,000 --> 00:50:32,000 Те не ще си взаимодействат все още. 938 00:50:32,000 --> 00:50:36,000 Начинът, по който си взаимодействат тези два екрана можете да зададете отношения. 939 00:50:36,000 --> 00:50:39,000 По принцип можете да го кажа екрана, когато натиснете този бутон, 940 00:50:39,000 --> 00:50:42,000 Искам да се плъзга към този нов екран. 941 00:50:42,000 --> 00:50:44,000 Това означава, че този вид отношения между 942 00:50:44,000 --> 00:50:46,000  на първия екран и втория екран. 943 00:50:46,000 --> 00:50:49,000 Ще трябва основно стрелката от този бутон на втория екран 944 00:50:49,000 --> 00:50:53,000 казват, че когато натиснете този бутон, това е мястото, където искам да отида. 945 00:50:53,000 --> 00:50:57,000 Точно както ние контролираме щракнали и влачен да се определят тези обекти 946 00:50:57,000 --> 00:51:01,000 отиваме да направи същото нещо, което трябва да се определят тези плавно преминава. 947 00:51:01,000 --> 00:51:05,000 >> Ще видим пример за това, и преди ние всъщност преход 948 00:51:05,000 --> 00:51:08,000 от един екран на друг IOS е достатъчно добър, за да наричаме този метод 949 00:51:08,000 --> 00:51:11,000 нарича prepareForSegue, и това е мястото, където можем да започнем 950 00:51:11,000 --> 00:51:14,000 изпращане на данни от един апартамент към друг. 951 00:51:14,000 --> 00:51:17,000 В този пример ние сме на път да го разгледат по същество ще ни позволи 952 00:51:17,000 --> 00:51:20,000 да филтрирате бейзболни отбори от лиги и разделяния. 953 00:51:20,000 --> 00:51:23,000 Когато изберете лигата, например, искам да прехода 954 00:51:23,000 --> 00:51:25,000 до следващата екрана, където мога да се покажат всички на отделенията 955 00:51:25,000 --> 00:51:27,000 в тази лига или всички различни екипи. 956 00:51:27,000 --> 00:51:31,000 Трябва да изпрати на този екран, какви отбори трябва да покажете. 957 00:51:31,000 --> 00:51:35,000 Да направя, че аз отивам да се възползват от този метод тук. 958 00:51:35,000 --> 00:51:39,000 >> На последно място, само на произволна точка на IOS. 959 00:51:39,000 --> 00:51:41,000 Ако искате да съхранявате данните е това нещо, наречено основни данни, 960 00:51:41,000 --> 00:51:44,000 която всъщност е вид сложно да се работи с. 961 00:51:44,000 --> 00:51:47,000 Можете също да използвате SQL за съхранение на данни, 962 00:51:47,000 --> 00:51:51,000 което, отново, е хубаво, но някак по-сложно страна да работите, 963 00:51:51,000 --> 00:51:55,000 но IOS също подкрепя тези наистина готини неща, наречени собственост списъци, 964 00:51:55,000 --> 00:52:00,000 и с имуществена списък е само файл, който представлява ключови двойки стойност. 965 00:52:00,000 --> 00:52:03,000 Вие дефинирате списък на ключове, а вие казвате, на този бутон ще бъде масив. 966 00:52:03,000 --> 00:52:06,000 Този ключ ще бъде низ, и в общи линии всичко, което може да направи 967 00:52:06,000 --> 00:52:10,000 в JSON можете да направите в рамките на списъка имот, 968 00:52:10,000 --> 00:52:14,000 и така това наистина добре ни позволява да работим с някои данни. 969 00:52:14,000 --> 00:52:18,000 Например, аз имам този Teams.plist, че съм създал. 970 00:52:18,000 --> 00:52:22,000 Съм създал нов файл plist, и аз може да пробия. 971 00:52:22,000 --> 00:52:26,000 Това е речник, това е речник, това са низове, 972 00:52:26,000 --> 00:52:30,000 и така това е хубаво графично представяне на документ, JSON 973 00:52:30,000 --> 00:52:33,000 или просто набор на ключови двойки стойност, 974 00:52:33,000 --> 00:52:37,000 и така това са данните, че ще се работи с вътрешността на моя апартамент. 975 00:52:37,000 --> 00:52:40,000 >> Нека първо да дойде тук. Ние имаме много повече файлове. 976 00:52:40,000 --> 00:52:44,000 Но нека първо да дойде тук, за да сториборда. 977 00:52:44,000 --> 00:52:48,000 Монтажната маса тук, ако мога да я увеличите 978 00:52:48,000 --> 00:52:51,000 можем да видим, че това е поток от моя апартамент. 979 00:52:51,000 --> 00:52:53,000 Аз съм първият ще започне на този екран. 980 00:52:53,000 --> 00:52:55,000 Отивам да пробия до този екран, 981 00:52:55,000 --> 00:52:58,000 и аз отивам да пробия до този екран, и можем да видим тук, че ако аз вид 982 00:52:58,000 --> 00:53:04,000 се движат един от тези около ние сме тези стрелки от тук до тук, 983 00:53:04,000 --> 00:53:08,000 и начина, по който се определи, че стрелката е, ако съм я увеличите малко, 984 00:53:08,000 --> 00:53:12,000 и ако дойда тази гледна точка контролер, 985 00:53:12,000 --> 00:53:16,000 и тук е клетка, и аз искам да кажа, че когато докоснете клетка 986 00:53:16,000 --> 00:53:18,000 Искам да се плъзга към друг екран. 987 00:53:18,000 --> 00:53:21,000 Мога просто задръжте натиснат контрол, 988 00:53:21,000 --> 00:53:26,000 сменя малко, задръжте натиснат контрол, плъзнете тази клетка и да отидете. 989 00:53:26,000 --> 00:53:30,000 >> И тук ние казваме какво е преход, който искате да използвате? 990 00:53:30,000 --> 00:53:32,000 Искате ли да използвате този слайд нещо, което се нарича тласък? 991 00:53:32,000 --> 00:53:34,000 Искате ли да се плъзга нагоре от дъното? 992 00:53:34,000 --> 00:53:36,000 Това се нарича модален. 993 00:53:36,000 --> 00:53:40,000 И след като щракнете върху един от тях, той ще направи тази стрелка за мен, 994 00:53:40,000 --> 00:53:44,000 и това означава, че съм действително са това, което се случва, когато натиснете този бутон графично. 995 00:53:44,000 --> 00:53:48,000 Аз не пиша код, за да плъзнете от един екран на следващия. 996 00:53:48,000 --> 00:53:51,000 Определи тази визуално вътрешността на Interface Builder. 997 00:53:51,000 --> 00:53:55,000 Ако кликнете върху тази стрелка, можем да видим, че дадох това име. 998 00:53:55,000 --> 00:53:59,000 Го нарече showDivisions, и това е, така че мога да знам 999 00:53:59,000 --> 00:54:03,000 какъв преход е на път да се случи, и ще видим защо само в секунда. 1000 00:54:03,000 --> 00:54:06,000 Ето как съм жични различните екрани в моя апартамент. 1001 00:54:06,000 --> 00:54:09,000 Ако това беше един бутон, например, а не цел маса, 1002 00:54:09,000 --> 00:54:11,000 Мога да контролирам кликнете върху бутона, плъзнете към следващия екран, 1003 00:54:11,000 --> 00:54:16,000 и това е как мога да направя навигация по този начин. 1004 00:54:16,000 --> 00:54:19,000 >> Наистина бързо, ако отидем в MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 отново, ние просто ще се определи списък на нещата, 1006 00:54:22,000 --> 00:54:26,000 , които ще се показват в табличен изглед. 1007 00:54:26,000 --> 00:54:29,000 Ето аз казвам, че искате да направите тази plist файл, 1008 00:54:29,000 --> 00:54:32,000 и аз искам да го заредите в речника, 1009 00:54:32,000 --> 00:54:35,000 и след като имате този речник, аз ще съм отново да отговори на същите въпроси. 1010 00:54:35,000 --> 00:54:37,000 Ето броя на секциите. 1011 00:54:37,000 --> 00:54:41,000 Едно, има по един ред за всяка лига, а текстът на всяка клетка 1012 00:54:41,000 --> 00:54:46,000 трябва да бъде първата, първа лига, втората лига, и така нататък. 1013 00:54:46,000 --> 00:54:51,000 И накрая, аз отивам да използвате този метод, че току-що видяхме, наречена prepareForSegue 1014 00:54:51,000 --> 00:54:54,000 и това е метод, който ще бъде уволнен, когато щракнете 1015 00:54:54,000 --> 00:54:57,000 на един от тези редове и затова активирането на този преход 1016 00:54:57,000 --> 00:54:59,000 , че със стрелките. 1017 00:54:59,000 --> 00:55:02,000 Това се казва, че може да има няколко 1018 00:55:02,000 --> 00:55:05,000 отношения от един екран на друг. 1019 00:55:05,000 --> 00:55:08,000 Ако имам две копчета и всеки бутон ще ви отведе до различен екран 1020 00:55:08,000 --> 00:55:10,000 Отивам да имат два плавно преминава, 1 за всеки бутон. 1021 00:55:10,000 --> 00:55:14,000 Но това отново е prepareForSegue ще бъдат използвани повторно 1022 00:55:14,000 --> 00:55:17,000 за всеки от различни взаимоотношения, така че това означава, че се нуждаят от начин 1023 00:55:17,000 --> 00:55:21,000 идентифициране ако натиснете първия бутон или натиснете втория бутон. 1024 00:55:21,000 --> 00:55:25,000 >> Помниш ли, когато дадох, че Segue име, това showDivisions, 1025 00:55:25,000 --> 00:55:29,000 как сега знам, че това е Segue, че е била активирана. 1026 00:55:29,000 --> 00:55:32,000 Всичко, което искам да направя, е, че аз искам да кажа 1027 00:55:32,000 --> 00:55:35,000 Искам да разбера това, което току-що удари, 1028 00:55:35,000 --> 00:55:38,000 и така да се получи, че мога да кажа, че искам indexPath за избрания ред, 1029 00:55:38,000 --> 00:55:42,000 запомни indexPath просто казва, където аз просто кликнали, 1030 00:55:42,000 --> 00:55:47,000 и след това искам да кажа, че искам да разбера къде отивам. 1031 00:55:47,000 --> 00:55:50,000 Този destinationViewController, че е собственост на Segue. 1032 00:55:50,000 --> 00:55:53,000 Това е екрана Отивам да, 1033 00:55:53,000 --> 00:55:56,000 така че аз знам, че на екрана, аз отивам да се нарича DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 защото съм създал този клас, 1035 00:55:59,000 --> 00:56:02,000 И така, сега, ако кажа, d.divisions 1036 00:56:02,000 --> 00:56:06,000 Аз съм сега определяне собственост на контролера аз съм за да отидете на оглед. 1037 00:56:06,000 --> 00:56:10,000 Това е как аз съм изпращане на данни от един екран на друг екран. 1038 00:56:10,000 --> 00:56:13,000 >> Просто гледам на този DivisionsViewController 1039 00:56:13,000 --> 00:56:16,000 можете да видите тук, че в файла ч 1040 00:56:16,000 --> 00:56:20,000 там е, че собственост дивизии, и това е, което аз съм основно населяващи 1041 00:56:20,000 --> 00:56:25,000 така че това е как аз знам, че съм показване на поделенията, съответстващи на 1042 00:56:25,000 --> 00:56:28,000 лига, че аз кликнали, и отново, 1043 00:56:28,000 --> 00:56:31,000 действителния изглед на таблицата изглежда почти едни и същи, просто отговори на тези 1044 00:56:31,000 --> 00:56:34,000 3 прости въпроса, както и идентифициране на 1045 00:56:34,000 --> 00:56:37,000 какво се случва, когато преминавате към следващия екран. 1046 00:56:37,000 --> 00:56:40,000 Само няколко други неща. 1047 00:56:40,000 --> 00:56:43,000 Забелязвате ли на върха, че вместо да каже # включват 1048 00:56:43,000 --> 00:56:45,000 Аз съм сега казват, # внасят. 1049 00:56:45,000 --> 00:56:47,000 Това е просто нещо, Objective-C. 1050 00:56:47,000 --> 00:56:52,000 Вносът е основно по-хубав версия на включват, 1051 00:56:52,000 --> 00:56:57,000 и например, ние трябва да знаем какво този клас е, 1052 00:56:57,000 --> 00:57:00,000 така че не може просто да се каже, DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Ако ние не hashtag standardio.c вътрешността на нашия файл в 1054 00:57:05,000 --> 00:57:07,000 компилаторът не е имал представа какво ФОРМАТ. 1055 00:57:07,000 --> 00:57:12,000 По същия начин, ако не внасят DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 съставител наистина има никаква представа какво DivisionsViewController. 1057 00:57:16,000 --> 00:57:19,000 Просто се уверете, че вътрешността на вашите различни файлове м, се уверете, че можете да импортирате 1058 00:57:19,000 --> 00:57:25,000 съответните файлове ч, така че компилаторът знае какво става. 1059 00:57:25,000 --> 00:57:31,000 >> И накрая, какво Apple в крайна сметка се е показва някои данни, използвайки уеб оглед, 1060 00:57:31,000 --> 00:57:35,000 и така уеб оглед е обект, в който можете да вградите 1061 00:57:35,000 --> 00:57:37,000 малко уеб браузър в рамките на приложението ти. 1062 00:57:37,000 --> 00:57:40,000 Всичко, което трябва да направите, е да предоставя URL на вашия уеб браузър, 1063 00:57:40,000 --> 00:57:43,000 така че аз искам да отидете на mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 и това е как мога да получите достъп до началната страница за всеки отбор, 1065 00:57:46,000 --> 00:57:49,000 и така от преминаващи този адрес 1066 00:57:49,000 --> 00:57:52,000 уеб може да покаже това за мен и мога да разглеждате наоколо, 1067 00:57:52,000 --> 00:58:01,000 и симулатор е в употреба от другата. 1068 00:58:01,000 --> 00:58:03,000 Сега това дойде от моя plist. 1069 00:58:03,000 --> 00:58:07,000 Ако кликнете тази също дойде от моя plist, и тази плъзгащи се обработват 1070 00:58:07,000 --> 00:58:09,000 определянето на тези плавно преминава. 1071 00:58:09,000 --> 00:58:12,000 Кликнете върху този и още един, 1072 00:58:12,000 --> 00:58:15,000 и сега тук е моя UIWebView, така че просто като че 1073 00:58:15,000 --> 00:58:19,000 тук е сайт за URL, че аз просто вградени, 1074 00:58:19,000 --> 00:58:21,000 и аз не трябва да се справя с всичко луд. 1075 00:58:21,000 --> 00:58:24,000 Това е, как да се показва на уеб страница. 1076 00:58:24,000 --> 00:58:27,000 Неща като това бутона "Назад" тук са дадени и за мен 1077 00:58:27,000 --> 00:58:33,000 напълно безплатно, защото сте определили тези взаимоотношения, използвайки плавно преминава. 1078 00:58:33,000 --> 00:58:37,000 >> Някакви въпроси? Да. 1079 00:58:37,000 --> 00:58:40,000 [Student] Така че, когато използвате заделянето на памет, никога не трябва да безплатно нещо? 1080 00:58:40,000 --> 00:58:43,000 Точно така, когато ти се обадя заделянето на памет и INIT не е нужно да го освободи. 1081 00:58:43,000 --> 00:58:46,000 IOS ще се справят с всичко това за вас. 1082 00:58:46,000 --> 00:58:51,000 Това е чудесно, и не нарушава никакви правила. Да. 1083 00:58:51,000 --> 00:58:54,000 [Студентски] Ако ви се налага да се включат повече отбори, които биха могли да се поберат на екрана, 1084 00:58:54,000 --> 00:58:58,000 той автоматично ще имат опцията за превъртане, или е, че нещо трябва да добавите? 1085 00:58:58,000 --> 00:59:01,000 Точно така, ако имах повече отбори, например, автоматично ще се справят 1086 00:59:01,000 --> 00:59:04,000 превъртане за мен, и на всички опасения за изпълнение 1087 00:59:04,000 --> 00:59:08,000 с огромна маса са обработени изцяло за мен. 1088 00:59:08,000 --> 00:59:11,000 >> Други въпроси? 1089 00:59:11,000 --> 00:59:13,000 Всичко на този кодекс се ще да бъде публикуван. 1090 00:59:13,000 --> 00:59:16,000 Ние Споменахме малко по-дребни детайли, 1091 00:59:16,000 --> 00:59:19,000 но неща като определяне на някои свойства на уеб оглед 1092 00:59:19,000 --> 00:59:22,000 са само неща, които можете да получите, като посетите документация на Apple, 1093 00:59:22,000 --> 00:59:24,000 , което е много, много добре. 1094 00:59:24,000 --> 00:59:27,000 Те имат много примерни приложения и пример обичаи 1095 00:59:27,000 --> 00:59:34,000 на различни програмни интерфейси (API), така че определено чета, ако можете. 1096 00:59:34,000 --> 00:59:36,000 Просто някои полезни връзки, може да искате да погледнете. 1097 00:59:36,000 --> 00:59:38,000 Това са някои полезни ръководства документация. 1098 00:59:38,000 --> 00:59:41,000 URL адресите са масивни, така че те са съкратени. 1099 00:59:41,000 --> 00:59:44,000 Това първото е цялата библиотека на документация. 1100 00:59:44,000 --> 00:59:46,000 Има малки барове за търсене, така че ако започнете да пишете бутона 1101 00:59:46,000 --> 00:59:50,000 тя ще започнем да даваме цялата информация за всички неща, които можете да направите с един бутон. 1102 00:59:50,000 --> 00:59:53,000 Съм също са включени в Таблица Виж Програмиране Guide. 1103 00:59:53,000 --> 00:59:56,000 Той се справя с таблици в много по-подробно, 1104 00:59:56,000 --> 01:00:00,000 как да направя неща, като динамично добавяте клетки или редактиране клетки или да ги премахнете. 1105 01:00:00,000 --> 01:00:02,000 >> Има много примерни приложения от Apple, които ще ви покажем как да го направя, 1106 01:00:02,000 --> 01:00:05,000 и накрая, последната е на човека Насоките Интерфейс, 1107 01:00:05,000 --> 01:00:09,000 и това е в основата някаква дискусия на компонентите на потребителския интерфейс, 1108 01:00:09,000 --> 01:00:12,000 не правят неща като бутон, който е 4 пиксела от 4 пиксела. 1109 01:00:12,000 --> 01:00:15,000 Това е лоша идея, и други неща, които Apple иска да направи 1110 01:00:15,000 --> 01:00:18,000 за насърчаване на добър дизайн. 1111 01:00:18,000 --> 01:00:23,000 >> Някакви последни въпроси преди да приключим? 1112 01:00:23,000 --> 01:00:27,000 Добре, определено не се колебайте - ние ще имат специални етикети върху Обсъждане. 1113 01:00:27,000 --> 01:00:30,000 Ще имаме на IOS един, така че определено се чувстват свободни да използват това. 1114 01:00:30,000 --> 01:00:34,000 Ако искате да работите със съучениците си по проекти 1115 01:00:34,000 --> 01:00:37,000 или да разбера някои случайни неща IOS 1116 01:00:37,000 --> 01:00:40,000 не се колебайте да ми пишете, и определено чета цялата код онлайн, защото 1117 01:00:40,000 --> 01:00:43,000 само в интерес на времето ние вид Споменахме толкова повече 1118 01:00:43,000 --> 01:00:45,000 фини дребнозърнести подробности за нещата. 1119 01:00:45,000 --> 01:00:47,000 Но ако не, тогава на добър час по вашите проекти IOS, и аз се надявам ние имаме 1120 01:00:47,000 --> 01:00:53,000 голям приток на приложения в App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]