1 00:00:00,000 --> 00:00:11,420 2 00:00:11,420 --> 00:00:13,590 >> Tianyu LIU: Ei, como é que vai todo mundo? 3 00:00:13,590 --> 00:00:20,250 E este é o iOS App Programação do objectivo c seminário. 4 00:00:20,250 --> 00:00:21,520 E meu nome é Tianyu Liu. 5 00:00:21,520 --> 00:00:26,114 Eu sou um júnior Lowell agora, concentrando-se em ciência da computação. 6 00:00:26,114 --> 00:00:28,030 Portanto, neste seminário que eu sou vai ensinar a vocês 7 00:00:28,030 --> 00:00:30,770 um pouco sobre como fazer um app. 8 00:00:30,770 --> 00:00:33,030 Yay, ficar animado para ele. 9 00:00:33,030 --> 00:00:36,790 >> Assim, antes mesmo de começar o mergulho para o lado de programação real, 10 00:00:36,790 --> 00:00:41,840 vamos apenas falar sobre muito rapidamente por que você pode querer construir um app iOS? 11 00:00:41,840 --> 00:00:43,940 Por que é tão incrível iOS? 12 00:00:43,940 --> 00:00:47,250 Assim, o primeiro problema, o primeiro coisa que é muito legal para nós, 13 00:00:47,250 --> 00:00:51,190 especialmente como um CS50 estudante, é que iOS 14 00:00:51,190 --> 00:00:55,860 usa Objective C. Bem, há uma nova linguagem chamada Swift, 15 00:00:55,860 --> 00:00:58,260 mas nós não vamos usar que neste seminário. 16 00:00:58,260 --> 00:01:01,540 Se você estiver interessado em Swift, há é um seminário independente sobre isso. 17 00:01:01,540 --> 00:01:05,590 Mas Objective C é basicamente um super conjunto de C. Significado 18 00:01:05,590 --> 00:01:10,230 que tudo o que você pode usar em C ser traduzido em Objective C 19 00:01:10,230 --> 00:01:11,630 muito facilmente. 20 00:01:11,630 --> 00:01:15,730 >> Como você pode ver mais tarde, que na verdade há alguma sintaxe muito básico, são 21 00:01:15,730 --> 00:01:19,790 basicamente exatamente o mesmo, C e Objective C. Então, 22 00:01:19,790 --> 00:01:22,860 desde que você tenha tomado CS50 -se até aqui, você já 23 00:01:22,860 --> 00:01:26,500 Objectivo sabe C, pelo menos 40%. 24 00:01:26,500 --> 00:01:30,720 Além disso, a Apple tem um realmente API robusto para iOS. 25 00:01:30,720 --> 00:01:33,750 Há um monte de muito louco coisas que você pode fazer com ele. 26 00:01:33,750 --> 00:01:36,760 Um dos quais é alguém realmente criou um app iOS 27 00:01:36,760 --> 00:01:40,600 para carros de controle, que é bastante interessante. 28 00:01:40,600 --> 00:01:42,610 Provavelmente, um helicóptero é mais emocionante. 29 00:01:42,610 --> 00:01:47,020 Mas isso é o quão poderoso API iOS pode ser. 30 00:01:47,020 --> 00:01:49,340 >> E como você pode ter descobri agora, 31 00:01:49,340 --> 00:01:53,000 o estouro de pilha é provavelmente um dos os mais importantes recursos on-line 32 00:01:53,000 --> 00:01:54,250 disponível para você. 33 00:01:54,250 --> 00:01:58,090 E uma boa notícia, para cada único problema que você pode, possivelmente, 34 00:01:58,090 --> 00:02:01,840 pensar ao construir o seu projeto final em Objective C, 35 00:02:01,840 --> 00:02:05,910 é provável que exista uma resposta de estouro de pilha. 36 00:02:05,910 --> 00:02:07,420 É simplesmente fantástico. 37 00:02:07,420 --> 00:02:12,780 Além de que, iOS é realmente uma plataforma 38 00:02:12,780 --> 00:02:16,260 onde você pode chegar a uma enorme audiência com pouco esforço. 39 00:02:16,260 --> 00:02:20,170 Não é como o Android, onde está tudo muito fragmentado. 40 00:02:20,170 --> 00:02:22,540 >> Tudo iOS é unificado. 41 00:02:22,540 --> 00:02:25,920 E enquanto você cria um aplicativo para o iPhone, 42 00:02:25,920 --> 00:02:31,260 Você pode facilmente porta que para iPad, iPad mini, ou de diferentes tamanhos para iPhone. 43 00:02:31,260 --> 00:02:33,050 Estes são todos realmente conveniente. 44 00:02:33,050 --> 00:02:36,430 E é realmente muito bom para impressionar seus amigos. 45 00:02:36,430 --> 00:02:38,920 Você pode apenas realizar um iPhone e diga ao seu amigo hey, 46 00:02:38,920 --> 00:02:40,250 este é o aplicativo que eu faço. 47 00:02:40,250 --> 00:02:43,860 Você pode fazer isso por qualquer aplicativos de desktop, que é bom. 48 00:02:43,860 --> 00:02:48,870 >> Tudo bem, agora vamos realmente começar na linguagem Objective C. 49 00:02:48,870 --> 00:02:52,910 Então, por que não começar com alguma sintaxe muito básico. 50 00:02:52,910 --> 00:02:57,410 Como mencionei antes Objetivo C É basicamente um super conjunto de C. 51 00:02:57,410 --> 00:03:01,860 Então, um monte de sintaxe básica são na verdade, exatamente o mesmo. 52 00:03:01,860 --> 00:03:06,150 Declarando uma variável e adição de duas variáveis ​​em conjunto 53 00:03:06,150 --> 00:03:09,440 é exatamente como fizemos no Mario. 54 00:03:09,440 --> 00:03:11,140 Nada de novo aqui. 55 00:03:11,140 --> 00:03:17,370 >> Da mesma forma, o inquilino for loop e condição também é o mesmo. 56 00:03:17,370 --> 00:03:22,370 Você pode fazer um loop, assim como você já fez em um Mario [inaudível]. 57 00:03:22,370 --> 00:03:26,280 E você pode fazer condições assim como o que você 58 00:03:26,280 --> 00:03:29,240 vêm fazendo em seus sets p anteriores. 59 00:03:29,240 --> 00:03:33,400 No entanto, Objective C não é completamente C, 60 00:03:33,400 --> 00:03:36,640 e não é algo que é uma espécie de estranho nisso. 61 00:03:36,640 --> 00:03:42,340 >> A primeira delas é que quando você está fazendo programação C, que normalmente chamamos 62 00:03:42,340 --> 00:03:46,310 incluir e, em seguida, um nome de biblioteca. 63 00:03:46,310 --> 00:03:49,860 Mas em Objective C você chama isso de importação. 64 00:03:49,860 --> 00:03:53,100 Basicamente dizendo funcionalidade, apenas nomes diferentes. 65 00:03:53,100 --> 00:03:55,940 E as cordas são na verdade, um pouco estranho. 66 00:03:55,940 --> 00:03:58,250 Você pode ver que o primeiro coisa que é meio estranho 67 00:03:58,250 --> 00:04:04,190 é que você tem uma bela weird-- sorry-- você tem NS muito estranho 68 00:04:04,190 --> 00:04:04,960 assinar aqui. 69 00:04:04,960 --> 00:04:07,452 70 00:04:07,452 --> 00:04:09,160 E a segunda coisa isso é meio estranho 71 00:04:09,160 --> 00:04:14,090 se você tem uma arroba antes na verdade, declarando a string. 72 00:04:14,090 --> 00:04:19,209 Assim, o sinal de arroba basicamente significa que uma corda não é apenas uma corda, 73 00:04:19,209 --> 00:04:20,880 na verdade é um objeto. 74 00:04:20,880 --> 00:04:22,780 Nós vamos explicar que mais tarde, então não fazer 75 00:04:22,780 --> 00:04:25,800 pânico se não o fizer compreender o que isso significa. 76 00:04:25,800 --> 00:04:29,980 E a impressão para o console é um pouco diferente, porque em C chamamos printf, 77 00:04:29,980 --> 00:04:33,350 mas em Objective C chamamos [inaudível]. 78 00:04:33,350 --> 00:04:35,640 >> Você pode estar se perguntando o que é isso. 79 00:04:35,640 --> 00:04:38,070 Isto é, basicamente, printf, apenas um idioma diferente. 80 00:04:38,070 --> 00:04:41,370 Exatamente o mesmo uso, exactamente a mesma funcionalidade. 81 00:04:41,370 --> 00:04:44,060 Bem, acontece que Objective C, na verdade, 82 00:04:44,060 --> 00:04:50,040 tem um prefixo ns em quase tudo, todos os tipos de dados básicos, 83 00:04:50,040 --> 00:04:52,690 NSString, NSArray, NSDictionary. 84 00:04:52,690 --> 00:04:56,340 A razão é que ns realmente significa Next Step, 85 00:04:56,340 --> 00:04:59,980 que é uma empresa que Steve Jobs fundou, 86 00:04:59,980 --> 00:05:03,960 que é uma empresa em que o linguagem Objective C nasce. 87 00:05:03,960 --> 00:05:06,140 Portanto, esta é basicamente a tradição. 88 00:05:06,140 --> 00:05:09,010 Eu sei que é um pouco estranho, mas é a Apple. 89 00:05:09,010 --> 00:05:16,840 >> Então, algo que é ainda mais estranho do que isso é uma declaração de função. 90 00:05:16,840 --> 00:05:22,600 Isso é muito diferente do que nós ver em C, porque aqui, na verdade, 91 00:05:22,600 --> 00:05:25,190 não se parece com C anymore. 92 00:05:25,190 --> 00:05:28,810 O que você tem aqui-- pelo forma como este não é um ponto de bala, 93 00:05:28,810 --> 00:05:30,690 este é um sinal de menos. 94 00:05:30,690 --> 00:05:36,440 Você tem um parêntese sinal de menos vazio e, em seguida, o nome da função. 95 00:05:36,440 --> 00:05:38,450 Vamos apenas dizer que se nós Olá mundo tem, então 96 00:05:38,450 --> 00:05:42,820 o tipo de retorno seria nula porque nós retornar nada. 97 00:05:42,820 --> 00:05:44,680 >> O que fica realmente estranho é que quando você está 98 00:05:44,680 --> 00:05:49,580 Tendo mais do que um parâmetro passando para uma mesma função que 99 00:05:49,580 --> 00:05:53,870 vai ser muito estranho, como mostrado aqui. 100 00:05:53,870 --> 00:05:58,230 Temos um nome do método, addInt chamado para [inaudível] 101 00:05:58,230 --> 00:06:00,370 e nós estamos passando um parâmetro. 102 00:06:00,370 --> 00:06:05,170 Mas depois disso, nós temos mais chamada nome do método com. 103 00:06:05,170 --> 00:06:08,500 E depois com o que estamos passando o segundo parâmetro. 104 00:06:08,500 --> 00:06:11,940 Este é realmente um pouco estranho, mas todas essas declarações de função 105 00:06:11,940 --> 00:06:14,770 seguem o mesmo padrão como este. 106 00:06:14,770 --> 00:06:17,450 >> Nós temos um sinal de menos para começar. 107 00:06:17,450 --> 00:06:21,550 O sinal negativo pode ser um sinal de mais às vezes com base em que tipo de método 108 00:06:21,550 --> 00:06:22,340 é isso. 109 00:06:22,340 --> 00:06:25,000 Método é basicamente outro nome para a função. 110 00:06:25,000 --> 00:06:26,760 E nós vamos explicam que mais tarde, quando 111 00:06:26,760 --> 00:06:30,580 estamos falando de objeto programação orientada. 112 00:06:30,580 --> 00:06:34,300 Primeiro você especificar o retorno digite parênteses dentro, 113 00:06:34,300 --> 00:06:37,450 após o qual vem o nome do método. 114 00:06:37,450 --> 00:06:40,310 Você está passando um parâmetro. 115 00:06:40,310 --> 00:06:44,750 E se você tem mais parâmetros você precisa estender o nome do método 116 00:06:44,750 --> 00:06:46,770 e, basicamente, escrever algo mais aqui. 117 00:06:46,770 --> 00:06:48,090 >> Poderia ser qualquer coisa que você quiser. 118 00:06:48,090 --> 00:06:50,140 No nosso caso, é com. 119 00:06:50,140 --> 00:06:56,160 Mas você poderia dizer final, ou, ou, ou abc bar completo, o que quiser. 120 00:06:56,160 --> 00:06:59,500 E, depois que você é passando parâmetro b. 121 00:06:59,500 --> 00:07:01,750 Este é realmente um estranho convenção, mas estamos 122 00:07:01,750 --> 00:07:05,800 vai ver por que a Apple queria para fazer isso muito rapidamente. 123 00:07:05,800 --> 00:07:10,530 Então, como você chamar a função? 124 00:07:10,530 --> 00:07:15,520 Chamar uma função em Objective C também é diferente da C. 125 00:07:15,520 --> 00:07:18,170 >> Na verdade, chamar um função em Objective C 126 00:07:18,170 --> 00:07:21,030 é mais como se você estivesse conversando com alguém. 127 00:07:21,030 --> 00:07:27,030 Aqui nós temos auto, que é chamado de um objeto. 128 00:07:27,030 --> 00:07:33,830 Você está basicamente dizendo a objeto de auto de dizer "Olá mundo!" 129 00:07:33,830 --> 00:07:36,830 Essa é a forma de chamar a função. 130 00:07:36,830 --> 00:07:41,690 Um objeto e um nome de método combinadas entre si. 131 00:07:41,690 --> 00:07:49,600 E é aí que a extensão estranho para o nome do método realmente entra em jogo. 132 00:07:49,600 --> 00:07:52,150 >> Vamos olhar para o segundo exemplo. 133 00:07:52,150 --> 00:07:56,780 Nós acabamos de definir um método chamado addInt com blá blá blá. 134 00:07:56,780 --> 00:08:00,066 Portanto, neste caso, quando você está chamando que [específico? mensagem?] ele vai 135 00:08:00,066 --> 00:08:02,035 para olhar como auto addInt: 10 com: 2. 136 00:08:02,035 --> 00:08:05,410 137 00:08:05,410 --> 00:08:08,070 Parece Inglês. 138 00:08:08,070 --> 00:08:11,980 Embora a função declaração de função é estranho, 139 00:08:11,980 --> 00:08:15,600 Do ponto de C do Objectivo método padrão de declaração, 140 00:08:15,600 --> 00:08:18,830 é que quando você está chamando a função ou método 141 00:08:18,830 --> 00:08:21,980 ele vai soar como o Inglês real. 142 00:08:21,980 --> 00:08:25,270 Portanto, é muito intuitivo uma vez que você se acostuma. 143 00:08:25,270 --> 00:08:28,740 >> Especialmente neste caso, onde você pode basicamente 144 00:08:28,740 --> 00:08:33,010 ver que o nome da função é tipo de documentação de si mesmo. 145 00:08:33,010 --> 00:08:35,390 Você não precisa de nenhum mais explicação para ver 146 00:08:35,390 --> 00:08:42,770 o que exatamente está acontecendo, o que exatamente um parâmetro fazendo. 147 00:08:42,770 --> 00:08:48,470 Indo além disso, vamos falar um pouco pouco sobre programação orientada a objeto. 148 00:08:48,470 --> 00:08:52,160 Programação orientada a objeto é um dos fundamental de programação 149 00:08:52,160 --> 00:08:57,110 técnicas ou padrões que é usado por Objective C. Objective C 150 00:08:57,110 --> 00:09:03,110 é chamado Objectivo C, não C, por uma razão muito boa. 151 00:09:03,110 --> 00:09:07,560 >> Então, antes de entrar em Sintaxe Objective C, 152 00:09:07,560 --> 00:09:11,670 Vamos realmente rapidamente olhar para o que exatamente é um objeto. 153 00:09:11,670 --> 00:09:15,480 Nós provavelmente tenha feito algo como objeto antes, que 154 00:09:15,480 --> 00:09:19,780 é chamado de struct quando você está implementação de uma árvore ou uma lista ligada 155 00:09:19,780 --> 00:09:25,730 ou [? tentar. ?] Então, é basicamente como um struct, 156 00:09:25,730 --> 00:09:28,560 mas é muito mais poderoso do que isso. 157 00:09:28,560 --> 00:09:33,150 Um objeto tem métodos e propriedades. 158 00:09:33,150 --> 00:09:35,310 Os métodos são basicamente funções. 159 00:09:35,310 --> 00:09:39,480 Basicamente funciona que um específico para um determinado objeto. 160 00:09:39,480 --> 00:09:45,440 >> E as propriedades são basicamente os campo que você especificar no struct. 161 00:09:45,440 --> 00:09:48,500 Assim, para cada objeto temos alguma propriedade 162 00:09:48,500 --> 00:09:53,160 que tem algumas variáveis ​​que são específicos para o objecto. 163 00:09:53,160 --> 00:09:57,170 E nós temos algumas funções que também são específicas para o objecto. 164 00:09:57,170 --> 00:10:01,180 E as funções são chamadas de métodos e as variáveis ​​são chamadas de propriedades. 165 00:10:01,180 --> 00:10:03,190 É apenas um nome fantasia. 166 00:10:03,190 --> 00:10:10,440 Enquanto você verdade, cada visão única você vê enquanto abre um app iOS, 167 00:10:10,440 --> 00:10:17,720 vamos apenas dizer que o Twitter ou o Facebook, cada única visão que você vê é um objeto. 168 00:10:17,720 --> 00:10:22,110 E mesmo todo o app é um objeto para começar. 169 00:10:22,110 --> 00:10:25,340 Conceito muito interessante. 170 00:10:25,340 --> 00:10:28,480 >> E por que nós queremos objeto programação orientada? 171 00:10:28,480 --> 00:10:33,530 Então você pode imaginar que quando você programa torna-se bastante complicado. 172 00:10:33,530 --> 00:10:36,400 Vamos apenas dizer que quando você está implementação de tabuleiro de xadrez, 173 00:10:36,400 --> 00:10:40,020 a lógica vai ser realmente complicado. 174 00:10:40,020 --> 00:10:43,280 Você tem 36 diferentes peças, de modo a que se 175 00:10:43,280 --> 00:10:48,370 quero escrever lógica para todos 36 peças diferentes em xadrez, 176 00:10:48,370 --> 00:10:52,150 que vai ser um monte de diferentes funções e variáveis. 177 00:10:52,150 --> 00:10:54,070 É um monte de problemas. 178 00:10:54,070 --> 00:10:58,980 E, provavelmente, você vai escrever uma método diferente ou função diferente 179 00:10:58,980 --> 00:11:03,950 para cada uma das peças de exatamente controlar o que eles fazem. 180 00:11:03,950 --> 00:11:08,830 >> Mas se você fizer orientada a objeto programação, todas estas peças 181 00:11:08,830 --> 00:11:12,440 pode ser resumido em um único objeto. 182 00:11:12,440 --> 00:11:16,111 E o objeto terá alguma comum propriedades, como que tipo de peça 183 00:11:16,111 --> 00:11:16,610 é isso? 184 00:11:16,610 --> 00:11:17,740 Qual é a cor? 185 00:11:17,740 --> 00:11:19,480 Como é que pode se mover? 186 00:11:19,480 --> 00:11:24,660 E dessa forma você tem muito simplificou a lógica do mesmo. 187 00:11:24,660 --> 00:11:28,480 Então é só uma boa maneira para fazer programas complicados, 188 00:11:28,480 --> 00:11:33,700 e relação hierárquica dentro do programa, muito simples. 189 00:11:33,700 --> 00:11:36,800 Como vamos ver por isso muito rapidamente quando 190 00:11:36,800 --> 00:11:39,660 na verdade estamos fazendo programming-- quando estamos realmente 191 00:11:39,660 --> 00:11:42,830 fazendo um código S programação sessão mais tarde. 192 00:11:42,830 --> 00:11:48,120 >> Bem além de que, programação orientada a objeto 193 00:11:48,120 --> 00:11:50,030 é apenas um monte de diversão. 194 00:11:50,030 --> 00:11:51,990 Você tem que criar seu próprio objeto. 195 00:11:51,990 --> 00:11:56,080 Você tem que projetar o que faz -lo parecido com você mesmo. 196 00:11:56,080 --> 00:11:58,250 Não há resposta certa para isso. 197 00:11:58,250 --> 00:12:02,940 E é totalmente interessante. 198 00:12:02,940 --> 00:12:07,270 Assim, em programação orientada a objetos, dois conceitos fundamentais 199 00:12:07,270 --> 00:12:10,130 vai ser de classe e instância. 200 00:12:10,130 --> 00:12:13,570 A classe é basicamente um modelo de objecto. 201 00:12:13,570 --> 00:12:18,070 E um exemplo é basicamente um objeto específico. 202 00:12:18,070 --> 00:12:21,090 >> Vamos apenas dizer que você está fazendo um cookie. 203 00:12:21,090 --> 00:12:24,800 Neste caso, cada cookie que você realmente acabar com 204 00:12:24,800 --> 00:12:27,310 vai ser um objeto. 205 00:12:27,310 --> 00:12:35,830 Mas a placa de cookie que você usar para assar todos os cookies serão uma classe. 206 00:12:35,830 --> 00:12:37,880 A classe é basicamente um modelo. 207 00:12:37,880 --> 00:12:46,170 E o exemplo será um específico objeto criado a partir dessa classe. 208 00:12:46,170 --> 00:12:49,970 >> E uma instância será criada com base na declaração de classe, 209 00:12:49,970 --> 00:12:56,760 como veremos em lâminas posteriores. 210 00:12:56,760 --> 00:13:00,010 Então vamos realmente fazem um exemplo rápido [inaudível]. 211 00:13:00,010 --> 00:13:04,280 Vamos dizer que estamos declarando um objeto para um gato. 212 00:13:04,280 --> 00:13:07,930 O objeto deve have-- a classe gato deve 213 00:13:07,930 --> 00:13:11,260 tem algumas propriedades e métodos. 214 00:13:11,260 --> 00:13:17,300 Que tipo de propriedades devem os classe have-- deve o gato tem? 215 00:13:17,300 --> 00:13:20,580 >> Por exemplo, a cor, idade e raça, os 216 00:13:20,580 --> 00:13:24,440 variáveis ​​que serão são específicos para cada gato. 217 00:13:24,440 --> 00:13:27,790 E essas são algumas coisas que usamos para descrever um gato. 218 00:13:27,790 --> 00:13:31,880 Que tipo de método, ou o que pode fazer um gato? 219 00:13:31,880 --> 00:13:37,160 Alguns exemplos rápidos seria perseguição rato, comer peixe ou apenas miar. 220 00:13:37,160 --> 00:13:40,900 Este é realmente um rápido exemplo de classe gato. 221 00:13:40,900 --> 00:13:46,920 E realmente um específico cat objeto será um gato 222 00:13:46,920 --> 00:13:50,930 onde se especifique o cor, idade e raça. 223 00:13:50,930 --> 00:13:53,790 >> Nesse caso, o nosso objectivo é já não uma classe mais. 224 00:13:53,790 --> 00:14:00,010 Nós copiar o modelo da classe e especificamos cada informação específica 225 00:14:00,010 --> 00:14:04,510 para esse objeto específico para torná-lo independente. 226 00:14:04,510 --> 00:14:09,350 E quando você está chamando um método dentro de um objeto, 227 00:14:09,350 --> 00:14:16,640 você acabou de chamar meow sobre o objeto, que é o gato que você acabou de criar. 228 00:14:16,640 --> 00:14:19,020 >> Provavelmente você irá imprimir algo como "Olá mundo! 229 00:14:19,020 --> 00:14:20,000 Miau. " 230 00:14:20,000 --> 00:14:22,110 Muito bonito. 231 00:14:22,110 --> 00:14:24,500 Tudo bem, vamos apenas entrar em alguns detalhes 232 00:14:24,500 --> 00:14:30,650 e ver o que faz exatamente esse traduzir-se em estar programação iOS. 233 00:14:30,650 --> 00:14:36,500 Assim, em iOS programando cada classe será implementado em dois arquivos. 234 00:14:36,500 --> 00:14:41,420 Um arquivo é aqui, que é chamada a interface. 235 00:14:41,420 --> 00:14:45,300 Outro arquivo é aqui, que é chamado de execução. 236 00:14:45,300 --> 00:14:48,890 >> Tipicamente a interface terá extension.h 237 00:14:48,890 --> 00:14:51,740 como vimos em bibliotecas C. 238 00:14:51,740 --> 00:14:56,340 E arquivo de implementação é vai ter extension.n. 239 00:14:56,340 --> 00:14:57,260 É uma espécie de estranho. 240 00:14:57,260 --> 00:15:01,270 Mas .n significa, na verdade, .c, não há diferença fundamental entre os 241 00:15:01,270 --> 00:15:02,100 dois. 242 00:15:02,100 --> 00:15:06,650 Portanto, neste caso, podemos ver que nós somos declarando interface, Cat: objeto. 243 00:15:06,650 --> 00:15:10,660 244 00:15:10,660 --> 00:15:13,760 Isso é chamado de herança. 245 00:15:13,760 --> 00:15:19,170 Nós estamos, basicamente, herdando a classe gato da classe de objeto. 246 00:15:19,170 --> 00:15:24,790 Assim, a cada propriedade e método que era previamente definido na classe de objeto 247 00:15:24,790 --> 00:15:28,560 será automaticamente definido em uma classe gato também. 248 00:15:28,560 --> 00:15:35,900 >> Além disso, define-se a cor, raça e idade, três variáveis. 249 00:15:35,900 --> 00:15:39,360 Isso realmente parece algo que você fez antes. 250 00:15:39,360 --> 00:15:41,770 Parece que struct. 251 00:15:41,770 --> 00:15:44,950 Isto é, basicamente, a sintaxe para declaração struct, 252 00:15:44,950 --> 00:15:47,710 e que é totalmente correcta. 253 00:15:47,710 --> 00:15:51,825 E desde que eu mencionei antes, a diferença que um struct 254 00:15:51,825 --> 00:15:53,960 e um objecto, um dos diferenças fundamentais 255 00:15:53,960 --> 00:15:59,080 é um objecto que tem método, enquanto que apenas tem uma estrutura variáveis. 256 00:15:59,080 --> 00:16:03,450 Assim, em adição às propriedades ou variáveis ​​que criamos para o objeto, 257 00:16:03,450 --> 00:16:05,700 especificamos algum método. 258 00:16:05,700 --> 00:16:09,720 >> Vamos apenas dizer que temos aqui dois métodos, um é Meow, 259 00:16:09,720 --> 00:16:12,460 outra é rato perseguição. 260 00:16:12,460 --> 00:16:18,600 Nós provavelmente vai querer estar passando um parâmetro com base em nosso método anterior 261 00:16:18,600 --> 00:16:20,440 padrão de declaração. 262 00:16:20,440 --> 00:16:22,160 Você provavelmente vai querer estar passando um mouse. 263 00:16:22,160 --> 00:16:25,180 E você provavelmente vai querer para retornar um significante bool 264 00:16:25,180 --> 00:16:30,010 Se o seu gato tem com sucesso pegou o mouse ou não. 265 00:16:30,010 --> 00:16:33,170 >> Esta é a interface, mas podemos ver que a interface realmente 266 00:16:33,170 --> 00:16:35,150 não faz nada. 267 00:16:35,150 --> 00:16:40,800 Ele apenas diz um programa que exists-- o que existe na classe gato. 268 00:16:40,800 --> 00:16:43,640 Assim, para que o programa para fazer alguma coisa, 269 00:16:43,640 --> 00:16:46,680 precisamos ter arquivos de implementação. 270 00:16:46,680 --> 00:16:51,940 Então, aqui, a primeira coisa que fazemos é obviamente, nós importamos a interface. 271 00:16:51,940 --> 00:16:56,470 Depois de importar o interface, define-se o método. 272 00:16:56,470 --> 00:17:00,150 >> Vamos apenas dizer que aqui miau seria apenas imprimir 273 00:17:00,150 --> 00:17:01,740 "Olá Mundo!" para o console. 274 00:17:01,740 --> 00:17:04,319 275 00:17:04,319 --> 00:17:08,460 E após a implementação arquivo, que está muito bem feito. 276 00:17:08,460 --> 00:17:14,530 Esta é basicamente uma classe declaração de uma classe. 277 00:17:14,530 --> 00:17:19,970 Então, agora a questão torna-se, Como você declarar uma variável? 278 00:17:19,970 --> 00:17:26,880 A maneira como você usa uma classe para criar uma objeto em Objective C está escrito aqui. 279 00:17:26,880 --> 00:17:30,730 >> Primeiro você especificar que este é um ponteiro gato, 280 00:17:30,730 --> 00:17:38,700 porque cada objeto em Objective C finalmente é implementado como um ponteiro. 281 00:17:38,700 --> 00:17:46,210 E você chamar a classe, chamá-los como alocação, que é basicamente malloc, 282 00:17:46,210 --> 00:17:51,220 dizendo o sistema operacional que você precisa de algum espaço de memória para este objeto. 283 00:17:51,220 --> 00:17:55,780 Depois que você tem um objeto já e você só inicialize-o. 284 00:17:55,780 --> 00:17:56,780 Esta é apenas uma convenção. 285 00:17:56,780 --> 00:17:59,390 286 00:17:59,390 --> 00:18:04,410 Eu sei que é um pouco estranho, mas este é, na verdade, como a Apple faz coisas. 287 00:18:04,410 --> 00:18:07,130 >> Atribuição de propriedades é na verdade, bastante simples. 288 00:18:07,130 --> 00:18:09,250 É muito semelhante ao o que você está fazendo quando 289 00:18:09,250 --> 00:18:13,780 você está atribuindo alguns específicos campo dentro de struct. 290 00:18:13,780 --> 00:18:16,830 Você só tem a variável nome, o nome da propriedade, 291 00:18:16,830 --> 00:18:20,140 e atribuir um valor específico a ele. 292 00:18:20,140 --> 00:18:24,120 E chamando um método é muito semelhante. 293 00:18:24,120 --> 00:18:29,080 A chamada de um método é basicamente o que eu falo sobre 294 00:18:29,080 --> 00:18:32,390 para chamar qualquer método em Objective C. 295 00:18:32,390 --> 00:18:36,660 >> Você está passando um objeto, em Neste caso, vai ser myCat, 296 00:18:36,660 --> 00:18:42,490 e você está passando o nome do método. 297 00:18:42,490 --> 00:18:47,130 Como se você estivesse falando para o objeto, myCat, que você deve miar. 298 00:18:47,130 --> 00:18:48,570 É muito interessante. 299 00:18:48,570 --> 00:18:52,010 300 00:18:52,010 --> 00:18:55,680 Depois disso, há um padrão de design mais essencial 301 00:18:55,680 --> 00:18:59,940 que nós precisamos conversar sobre antes de chegar ao código S real. 302 00:18:59,940 --> 00:19:03,300 Esse padrão de design é chamado evento dirigido programação. 303 00:19:03,300 --> 00:19:09,660 Isto também é, provavelmente, um dos mais idéias fundamentais na programação iOS. 304 00:19:09,660 --> 00:19:14,410 >> Então você provavelmente não sabe o que exatamente é a programação do evento conduzido, 305 00:19:14,410 --> 00:19:16,990 mas não é realmente tão assustador. 306 00:19:16,990 --> 00:19:20,400 Bem, na verdade, você tem já fiz isso antes. 307 00:19:20,400 --> 00:19:24,894 Esta é uma das linhas que você provavelmente já escrito na última [inaudível] 308 00:19:24,894 --> 00:19:26,810 de CS50, google.maps.event.addListener (marcador, 309 00:19:26,810 --> 00:19:27,810 "Clique", function () {}) :. 310 00:19:27,810 --> 00:19:32,410 311 00:19:32,410 --> 00:19:37,620 Ao chamar esta linha que você está essencialmente dizendo ao computador 312 00:19:37,620 --> 00:19:42,650 que sempre que o evento de chamada "Click" acontece no marcador, 313 00:19:42,650 --> 00:19:43,630 usar essa função. 314 00:19:43,630 --> 00:19:46,910 315 00:19:46,910 --> 00:19:50,950 >> Isto é muito diferente o que você faz em mario.c. 316 00:19:50,950 --> 00:19:56,670 Em mario.c basta executar o programa uma vez, dá-lhe uma saída, 317 00:19:56,670 --> 00:19:58,590 e está feito. 318 00:19:58,590 --> 00:20:02,590 Trata-se de uma espécie de como um programas de tiro. 319 00:20:02,590 --> 00:20:05,830 Programas dirigidos por eventos são muito, muito diferente. 320 00:20:05,830 --> 00:20:10,230 Vamos imaginar que, se o Facebook é um programa de tiro não é realmente bom. 321 00:20:10,230 --> 00:20:13,750 Você acabou de ir ao Facebook uma vez e ele é feito. 322 00:20:13,750 --> 00:20:16,700 Dá-lhe alguma saída e você nunca consegui-lo de volta. 323 00:20:16,700 --> 00:20:19,380 Você nunca tem nada de mais. 324 00:20:19,380 --> 00:20:23,880 >> Então, aqui, especialmente o padrão que usamos é 325 00:20:23,880 --> 00:20:26,940 evento dirigido, de modo que Cada função 326 00:20:26,940 --> 00:20:31,480 ser pego com base no que evento que aconteceu. 327 00:20:31,480 --> 00:20:34,670 Por exemplo, se tivermos um botão e nós especificamos 328 00:20:34,670 --> 00:20:39,870 que sempre que o botão é clicado, chamar a função chamada "Olá mundo!" 329 00:20:39,870 --> 00:20:47,810 Dessa forma nós podemos realmente gerenciar a lógica função 330 00:20:47,810 --> 00:20:50,560 fluir de uma maneira altamente flexível. 331 00:20:50,560 --> 00:20:55,840 O usuário pode fazer ou chamar uma função que já foi chamado. 332 00:20:55,840 --> 00:20:59,900 É completamente baseado em que os usuários fazem. 333 00:20:59,900 --> 00:21:04,080 >> Assim, podemos ver que este é na verdade, muito melhor do que mario.c. 334 00:21:04,080 --> 00:21:07,190 E boa notícia é que é na verdade, não é um conceito novo. 335 00:21:07,190 --> 00:21:12,140 Vocês já fizeram que no último conjunto de problemas. 336 00:21:12,140 --> 00:21:16,640 Assim, em Objective C existem três diagramas diferentes 337 00:21:16,640 --> 00:21:19,030 para evento dirigido programação. 338 00:21:19,030 --> 00:21:21,970 O primeiro diagrama é chamou a ação de destino, 339 00:21:21,970 --> 00:21:26,990 onde você ligar um botão imprensa com alguma função. 340 00:21:26,990 --> 00:21:31,590 Vamos apenas dizer que, sempre que você clicar algum botão, você chamar alguma função. 341 00:21:31,590 --> 00:21:33,620 Isto é muito simples ação de destino. 342 00:21:33,620 --> 00:21:35,580 >> O segundo é na verdade, o mais difícil, 343 00:21:35,580 --> 00:21:38,450 ele é chamado de delegação no protocolo. 344 00:21:38,450 --> 00:21:41,800 Nós vamos explicar que em grande detalhe mais tarde. 345 00:21:41,800 --> 00:21:44,420 E a terceira via é a notificação. 346 00:21:44,420 --> 00:21:46,770 Este não é, na verdade muito importante no que diz 347 00:21:46,770 --> 00:21:50,920 quanto nós estamos preocupados, porque a chance que você está indo para usar notificação 348 00:21:50,920 --> 00:21:53,310 em seu projeto final é bastante baixo. 349 00:21:53,310 --> 00:21:56,440 Então, vamos pular essa parte. 350 00:21:56,440 --> 00:21:59,460 >> E nós estamos indo para mergulhar em delegação no protocolo. 351 00:21:59,460 --> 00:22:02,380 352 00:22:02,380 --> 00:22:04,470 Então, o que exatamente é um protocolo? 353 00:22:04,470 --> 00:22:06,450 Ou o que é exatamente uma delegação? 354 00:22:06,450 --> 00:22:09,670 Vamos falar sobre o protocolo para começar. 355 00:22:09,670 --> 00:22:13,360 Os protocolos são nada além de eventos. 356 00:22:13,360 --> 00:22:19,230 Mas estes eventos são dadas aos você pela Apple para começar. 357 00:22:19,230 --> 00:22:22,640 Por exemplo, eu não sou completamente certo quantos de vocês 358 00:22:22,640 --> 00:22:27,930 caras uso original da Apple correio aplicativo ou contato, 359 00:22:27,930 --> 00:22:32,180 mas cada vez que se desloca a tabela e pressione a célula específica 360 00:22:32,180 --> 00:22:36,130 em cima da mesa, que é um evento. 361 00:22:36,130 --> 00:22:38,330 >> E se você quer fazer esse evento por si mesmo, 362 00:22:38,330 --> 00:22:40,410 na verdade é um pouco difícil. 363 00:22:40,410 --> 00:22:44,880 Assim, a Apple tem dado que, mesmo para você de modo que você pode apenas usar diretamente 364 00:22:44,880 --> 00:22:49,610 o evento para fazer algo em seu próprio país. 365 00:22:49,610 --> 00:22:52,980 Os protocolos são, na verdade, realmente, realmente muito utilizado 366 00:22:52,980 --> 00:22:58,320 em Objective C. Bem em verdade, cada app único 367 00:22:58,320 --> 00:23:00,870 tem algo chamou app delegado. 368 00:23:00,870 --> 00:23:06,330 Dentro de delicado é de todos os protocolos para carregar o app. 369 00:23:06,330 --> 00:23:12,470 >> Vamos apenas dizer que há um evento para o app fez carga. 370 00:23:12,470 --> 00:23:18,200 Então, o que deve acontecer depois que você criou um aplicativo, depois de abrir o app, 371 00:23:18,200 --> 00:23:22,630 depois de fechar o aplicativo, ou depois você colocar o iPhone para dormir. 372 00:23:22,630 --> 00:23:27,480 Estes são todos os eventos que possui já foi dado a você. 373 00:23:27,480 --> 00:23:34,730 E originalmente dentro destas partículas haverá nenhuma implementação. 374 00:23:34,730 --> 00:23:39,750 A Apple acaba de lhe disse que esta função vai acontecer quando ocorrer algum evento, 375 00:23:39,750 --> 00:23:44,380 mas o que você faz com que função é completamente até você. 376 00:23:44,380 --> 00:23:49,290 >> Delegação é basicamente dizendo a classe 377 00:23:49,290 --> 00:23:53,060 que você deve lidar com esses protocolos. 378 00:23:53,060 --> 00:23:55,340 É um pouco confusa, mas será 379 00:23:55,340 --> 00:23:59,380 muito mais clara quando fazemos os códigos s em acção. 380 00:23:59,380 --> 00:24:04,760 Delegação de protocolo é realmente um mecanismo muito robusto no sentido 381 00:24:04,760 --> 00:24:08,160 que se fizermos delegação para uma classe específica, 382 00:24:08,160 --> 00:24:12,400 podemos essencialmente lidar com todos os tipos de eventos 383 00:24:12,400 --> 00:24:17,040 usando qualquer classe que temos, ferramenta muito conveniente. 384 00:24:17,040 --> 00:24:21,530 >> Então, um exemplo rápido para delegação no protocolo 385 00:24:21,530 --> 00:24:24,120 será que eu acabei de falar. 386 00:24:24,120 --> 00:24:26,720 387 00:24:26,720 --> 00:24:30,890 Este protocolo é chamado especificamente tableview [inaudível] selecionar papel 388 00:24:30,890 --> 00:24:35,480 no [? índice?] [? passado. ?] Portanto, este um evento que seria pego quando você 389 00:24:35,480 --> 00:24:39,710 realmente tocar em um específico célula do seu tableview, 390 00:24:39,710 --> 00:24:43,570 vamos apenas dizer que em seu e-mail ou em seu aplicativo de contatos. 391 00:24:43,570 --> 00:24:48,180 >> Dentro de uma função havia originalmente não fazer nada. 392 00:24:48,180 --> 00:24:51,950 A função não faz fazer qualquer coisa por padrão. 393 00:24:51,950 --> 00:24:55,540 Mas você pode especificar que a função faz, 394 00:24:55,540 --> 00:24:59,610 dado o que você quer da sua aplicação. 395 00:24:59,610 --> 00:25:01,610 Uma ferramenta muito conveniente. 396 00:25:01,610 --> 00:25:06,840 E com tudo isso Dito isto, eu basicamente 397 00:25:06,840 --> 00:25:11,430 cobrir alguma sintaxe muito básico e conceito fundamental para Objective C 398 00:25:11,430 --> 00:25:15,860 programação, e nós podemos fazer algum código s. 399 00:25:15,860 --> 00:25:17,980 Muito mais emocionante. 400 00:25:17,980 --> 00:25:21,070 Assim s código é realmente um pouco esmagadora 401 00:25:21,070 --> 00:25:23,330 quando você abri-lo pela primeira vez. 402 00:25:23,330 --> 00:25:26,640 >> Uma nota rápida, por isso, se você quer fazer o desenvolvimento iOS, 403 00:25:26,640 --> 00:25:29,630 Eu recomendo que você tem um Mac. 404 00:25:29,630 --> 00:25:33,930 Porque fazendo o desenvolvimento iOS em Windows é muito, muito difícil. 405 00:25:33,930 --> 00:25:37,560 É factível, mas é realmente difícil. 406 00:25:37,560 --> 00:25:40,610 E você definitivamente não quiser usar g edição. 407 00:25:40,610 --> 00:25:47,950 Assim, em s código temos várias áreas diferentes. 408 00:25:47,950 --> 00:25:53,050 Quando você abre pela primeira vez s código você verá uma área de navegação, 409 00:25:53,050 --> 00:25:57,470 que basicamente mostra toda a arquivos que está em seu projeto atual. 410 00:25:57,470 --> 00:26:03,590 >> Você tem uma área de barra de ferramentas, que é basicamente gerir pontos de vista, 411 00:26:03,590 --> 00:26:08,570 ou algum pequeno e rápido ferramentas cerca s próprio código. 412 00:26:08,570 --> 00:26:11,140 E esta é a área real editor. 413 00:26:11,140 --> 00:26:15,900 Esta área é muito semelhante g editar, mas muito melhor do que g edição. 414 00:26:15,900 --> 00:26:21,150 E nesta área do direito, é chamada a área de utilidade. 415 00:26:21,150 --> 00:26:27,170 A área se torna realmente útil quando você está criando interface ou especificando 416 00:26:27,170 --> 00:26:30,070 algumas configurações rápidas para o seu app. 417 00:26:30,070 --> 00:26:34,570 >> E a área final é a depuração. 418 00:26:34,570 --> 00:26:37,970 Esta área contém o console. 419 00:26:37,970 --> 00:26:43,170 Assim, sempre que você diz printf, ou NSLog no nosso caso, 420 00:26:43,170 --> 00:26:47,330 todos os seus resultados são vai ser impresso aqui. 421 00:26:47,330 --> 00:26:48,260 Tudo certo? 422 00:26:48,260 --> 00:26:52,090 Eu acho que nós podemos realmente fazer rapidamente um exemplo para a programação iOS. 423 00:26:52,090 --> 00:26:54,220 E vamos realmente abrir código-se s. 424 00:26:54,220 --> 00:26:57,210 425 00:26:57,210 --> 00:27:01,346 Então, toda vez que você abrir o código-se s, é vai aparecer algo parecido. 426 00:27:01,346 --> 00:27:03,220 Ele vai lhe perguntar o que você quer fazer? 427 00:27:03,220 --> 00:27:06,830 Você quer começar algo aleatório, um parque infantil, basicamente você 428 00:27:06,830 --> 00:27:11,250 pode apenas testar o código sem realmente se comprometer com qualquer app. 429 00:27:11,250 --> 00:27:13,020 >> Você quer criar um novo projeto? 430 00:27:13,020 --> 00:27:16,660 Ou você quer continuar trabalhando no projeto existente? 431 00:27:16,660 --> 00:27:20,270 No nosso caso, vamos para criar um novo projeto. 432 00:27:20,270 --> 00:27:22,980 Por isso é muito bom, s código na verdade já tem 433 00:27:22,980 --> 00:27:26,820 -lhe dado alguns modelos para a criação de objetos. 434 00:27:26,820 --> 00:27:32,680 Se você quer fazer um jogo, o Código na verdade, tem um modelo de jogo para você, 435 00:27:32,680 --> 00:27:36,890 tem aplicações de página com base, aplicação baseada em abas. 436 00:27:36,890 --> 00:27:39,280 Neste caso, vamos para fazer algo muito simples, 437 00:27:39,280 --> 00:27:43,230 e nós estamos indo para usar um aplicação visão única. 438 00:27:43,230 --> 00:27:48,270 >> Depois disso, apenas o que você quiser chamá- seu produto, e qual é o seu nome, 439 00:27:48,270 --> 00:27:52,760 qual é o seu identificador, e o que a linguagem que você usa. 440 00:27:52,760 --> 00:27:57,060 Aqui nós não queremos vá utilizar o Data Core. 441 00:27:57,060 --> 00:28:00,170 Core Data é basicamente um databasing iOS. 442 00:28:00,170 --> 00:28:05,360 Se você fizer o Core Data, s código vai definir 443 00:28:05,360 --> 00:28:07,710 um lote aulas mais complicado para você. 444 00:28:07,710 --> 00:28:12,740 Portanto, para manter tudo simples, estamos só vou fazer sem Core Data 445 00:28:12,740 --> 00:28:15,290 agora mesmo. 446 00:28:15,290 --> 00:28:18,030 >> O problema que vai ser usando é isso-- o problema 447 00:28:18,030 --> 00:28:23,770 vamos estar criando é que nós basicamente deseja importar Mario de C 448 00:28:23,770 --> 00:28:25,437 a um app iOS. 449 00:28:25,437 --> 00:28:26,645 Então, vamos chamar isso de Mario-iOS. 450 00:28:26,645 --> 00:28:31,230 451 00:28:31,230 --> 00:28:34,880 É claro que você especificar o que você quer colocar no seu projeto. 452 00:28:34,880 --> 00:28:37,870 E lá vamos nós. 453 00:28:37,870 --> 00:28:41,390 >> Portanto, este é um pouco esmagadora, mas esta é realmente 454 00:28:41,390 --> 00:28:43,540 o que acabamos de ver nos slides. 455 00:28:43,540 --> 00:28:49,710 E a primeira área, vemos agora é basicamente configuração do projeto. 456 00:28:49,710 --> 00:28:53,390 Então, tudo o que você quer fazer projeto, que tipo de dispositivo, 457 00:28:53,390 --> 00:28:58,810 vamos apenas dizer que tipo de dispositivo quer o seu app para aparecer em? 458 00:28:58,810 --> 00:29:01,280 É iPhone, iPad ou universal? 459 00:29:01,280 --> 00:29:04,660 Assim, a orientação do dispositivo, todas essas coisas. 460 00:29:04,660 --> 00:29:08,490 Não é muito importante, mas poderia ser, mas esta 461 00:29:08,490 --> 00:29:11,050 É um lugar onde você configura seu projeto, se você realmente 462 00:29:11,050 --> 00:29:15,180 deseja implantar a loja da Apple. 463 00:29:15,180 --> 00:29:20,420 >> Tudo bem, vamos olhar para algo que está dentro de nosso código. 464 00:29:20,420 --> 00:29:22,360 Vamos percorrer o navegador de arquivos. 465 00:29:22,360 --> 00:29:30,140 E estes são todos os arquivos que já veio com o modelo, muito agradável. 466 00:29:30,140 --> 00:29:35,980 Então, quando nós clique em um deles isso é o que parece. 467 00:29:35,980 --> 00:29:38,530 Muito semelhante ao g edição. 468 00:29:38,530 --> 00:29:41,340 Mas você pode ver que a destaque de sintaxe é, provavelmente, 469 00:29:41,340 --> 00:29:42,780 um pouco mais agradável. 470 00:29:42,780 --> 00:29:45,610 E é realmente muito mais poderoso do que g edição. 471 00:29:45,610 --> 00:29:49,970 E você pode auto completa um monte de coisas para você, 472 00:29:49,970 --> 00:29:52,370 como veremos muito rapidamente. 473 00:29:52,370 --> 00:29:54,100 >> Vamos abrir a área de depuração também. 474 00:29:54,100 --> 00:30:02,790 475 00:30:02,790 --> 00:30:07,000 Tudo bem, como podemos ver, o console está bem aqui. 476 00:30:07,000 --> 00:30:13,840 Isto é o que você vai ver onde você está em printf ou nsloging algo. 477 00:30:13,840 --> 00:30:17,155 Assim, sem mais delongas, vamos realmente compilar o aplicativo e ver o que acontece. 478 00:30:17,155 --> 00:30:20,000 479 00:30:20,000 --> 00:30:23,410 Uma característica essencial para s código, é que s código 480 00:30:23,410 --> 00:30:25,850 vem com um simulador de iPhone. 481 00:30:25,850 --> 00:30:29,820 Assim você não precisa ter um iPhone para tentar o seu projeto, 482 00:30:29,820 --> 00:30:34,440 s código pode simular que, para você, como podemos ver no momento. 483 00:30:34,440 --> 00:30:36,406 >> É muito bom. 484 00:30:36,406 --> 00:30:38,640 Está demorando um pouco pouco de tempo para compilar 485 00:30:38,640 --> 00:30:43,040 e, basicamente, temos um aplicativo vazio, 486 00:30:43,040 --> 00:30:44,640 que na verdade não faz nada. 487 00:30:44,640 --> 00:30:46,175 Mas ele compila. 488 00:30:46,175 --> 00:30:47,380 É bastante impressionante. 489 00:30:47,380 --> 00:30:50,200 É muito melhor do que C, hein? 490 00:30:50,200 --> 00:30:52,130 Tudo bem, então vamos tentar acrescentar algo. 491 00:30:52,130 --> 00:30:56,050 492 00:30:56,050 --> 00:31:02,650 Um arquivo que é um pouco estranho aqui é chamado de storyboard. 493 00:31:02,650 --> 00:31:08,020 Este é realmente um grande, característica impressionante para s código. 494 00:31:08,020 --> 00:31:14,170 Porque em s código, você pode realmente arrastar e soltar elementos na interface 495 00:31:14,170 --> 00:31:17,430 e ele vai mostrar diretamente para cima. 496 00:31:17,430 --> 00:31:18,055 Vamos tentar isso. 497 00:31:18,055 --> 00:31:21,230 498 00:31:21,230 --> 00:31:27,236 >> Nós deixamos cair um rótulo aqui, "Olá mundo !!!" 499 00:31:27,236 --> 00:31:29,740 Nós podemos centralizar isso. 500 00:31:29,740 --> 00:31:30,970 Muito legal. 501 00:31:30,970 --> 00:31:33,915 Agora vamos executar esta simulação stop. 502 00:31:33,915 --> 00:31:36,940 503 00:31:36,940 --> 00:31:38,700 Aqui nós temos "Olá mundo !!!" 504 00:31:38,700 --> 00:31:40,810 Nós nem sequer fazer qualquer codificação ainda. 505 00:31:40,810 --> 00:31:42,750 O que diabos está acontecendo? 506 00:31:42,750 --> 00:31:45,880 Este é o quão poderoso Interface Builder pode ser. 507 00:31:45,880 --> 00:31:48,030 Alguém chegou a dizer que Provavelmente, você pode apenas 508 00:31:48,030 --> 00:31:52,800 completar um app sem escrever provavelmente mil linhas de código 509 00:31:52,800 --> 00:31:54,820 apenas usando a Interface Builder. 510 00:31:54,820 --> 00:31:59,680 Mas provavelmente não é a melhor maneira de fazê-lo. 511 00:31:59,680 --> 00:32:01,670 >> Agora vamos realmente começar a codificação. 512 00:32:01,670 --> 00:32:04,860 513 00:32:04,860 --> 00:32:08,330 Assim, a estrutura para o ficheiro é realmente muito interessante 514 00:32:08,330 --> 00:32:15,610 porque, como você pode ver, há nenhuma função principal em qualquer lugar. 515 00:32:15,610 --> 00:32:17,466 Veja? 516 00:32:17,466 --> 00:32:19,340 Como mencionamos anteriormente, você pode ver que esta 517 00:32:19,340 --> 00:32:22,830 é um arquivo de implementação para uma classe específica. 518 00:32:22,830 --> 00:32:25,690 Mas não há qualquer lugar principal. 519 00:32:25,690 --> 00:32:27,490 Então, onde é o principal? 520 00:32:27,490 --> 00:32:31,970 Na verdade, há um principal, mas o principal é, na verdade, escondida de vocês. 521 00:32:31,970 --> 00:32:34,560 O principal é aqui. 522 00:32:34,560 --> 00:32:37,120 Isso parece familiar. 523 00:32:37,120 --> 00:32:41,000 >> Então, basicamente o iOS está fazendo dentro principal 524 00:32:41,000 --> 00:32:43,540 é que, sempre que é principal chamado, que é basicamente 525 00:32:43,540 --> 00:32:49,000 sempre que o aplicativo é executado, ele cria um objeto chamado AppDelegate. 526 00:32:49,000 --> 00:32:52,980 527 00:32:52,980 --> 00:32:57,350 Como mencionei antes, a todo app é realmente um objeto por si só. 528 00:32:57,350 --> 00:33:02,270 Portanto, desta forma, basicamente, a iOS app está dizendo o compilador 529 00:33:02,270 --> 00:33:05,540 que OK, eu estou indo para criar um produto chamado AppDelegate, 530 00:33:05,540 --> 00:33:07,620 e que vai ser o meu app. 531 00:33:07,620 --> 00:33:09,640 Então, você precisa ir que através AppDelegate 532 00:33:09,640 --> 00:33:12,040 e ver o que esse cara está fazendo. 533 00:33:12,040 --> 00:33:14,850 Meu trabalho é feito por mim. 534 00:33:14,850 --> 00:33:22,070 >> E em AppDelegate você pode ver que existem algumas funções realmente estranhos, 535 00:33:22,070 --> 00:33:25,290 bem, na verdade, métodos, que Apple já lhe deu. 536 00:33:25,290 --> 00:33:27,464 Quem são esses? 537 00:33:27,464 --> 00:33:31,010 Estes são realmente apenas protocolos que eu estava falando. 538 00:33:31,010 --> 00:33:35,670 Então, esses são os eventos que a Apple deu-lhe para começar. 539 00:33:35,670 --> 00:33:38,050 Não há nada de alguma das funções agora, 540 00:33:38,050 --> 00:33:40,820 mas se queremos inicializar algo para o nosso app 541 00:33:40,820 --> 00:33:46,140 antes de entrar em exibição qualquer ponto de vista, nós fazemos isso aqui. 542 00:33:46,140 --> 00:33:51,150 >> Você pode apenas ler o nome e eu acho que o evento é realmente muito clara. 543 00:33:51,150 --> 00:33:54,160 544 00:33:54,160 --> 00:33:58,350 Então, agora principal criou um objeto para AppDelegate. 545 00:33:58,350 --> 00:34:05,220 E o que AppDelegate vai fazer é, na verdade, também escondido de você. 546 00:34:05,220 --> 00:34:09,250 O AppDelegate vai começar o carregamento do estoque ViewController. 547 00:34:09,250 --> 00:34:13,170 Então, é basicamente vai começar o carregamento de todos os pontos de vista que você tem 548 00:34:13,170 --> 00:34:17,500 e apenas processar a visão com base na hierarquia. 549 00:34:17,500 --> 00:34:21,280 >> Portanto, neste caso, só temos um ponto de vista, o que está aqui. 550 00:34:21,280 --> 00:34:25,060 Então, essa é a única vista que vai ser chamado. 551 00:34:25,060 --> 00:34:28,159 A lógica ViewController está bem aqui. 552 00:34:28,159 --> 00:34:32,159 Este é o código que realmente controla o ponto de vista que acabamos de ver. 553 00:34:32,159 --> 00:34:33,679 Tudo bem, vamos fazer alguma coisa aqui. 554 00:34:33,679 --> 00:34:44,030 555 00:34:44,030 --> 00:34:50,560 Então viewDidLoad soa como um evento, quando na verdade este é também um delegado, 556 00:34:50,560 --> 00:34:52,500 este é também um protocolo. 557 00:34:52,500 --> 00:34:56,350 >> Assim, seja qual for o ponto de vista é carregado, tudo dentro da função 558 00:34:56,350 --> 00:34:57,920 será chamado. 559 00:34:57,920 --> 00:35:02,840 Neste caso, devemos ver "Olá Tianyu! "Se executar o programa. 560 00:35:02,840 --> 00:35:09,820 561 00:35:09,820 --> 00:35:12,842 Está ficando um pouco lento a compilação dos arquivos de storyboard. 562 00:35:12,842 --> 00:35:15,440 563 00:35:15,440 --> 00:35:18,190 Bem, na verdade, nós vemos uma saída para ele. 564 00:35:18,190 --> 00:35:20,720 É muito legal. 565 00:35:20,720 --> 00:35:22,000 Agora vamos realmente fazer Mario. 566 00:35:22,000 --> 00:35:25,400 567 00:35:25,400 --> 00:35:27,625 Eu estou indo para definir o funcionar muito rapidamente. 568 00:35:27,625 --> 00:35:31,510 569 00:35:31,510 --> 00:35:54,245 marioWithLevels: Resultados (int) nível. 570 00:35:54,245 --> 00:36:01,120 571 00:36:01,120 --> 00:36:06,410 >> Tudo bem, este é realmente o impressionante recurso de s código de auto realização. 572 00:36:06,410 --> 00:36:10,680 Então, quando você escreve para e digite entrar, ele já desistiu do modelo 573 00:36:10,680 --> 00:36:12,325 para você, o que é muito legal. 574 00:36:12,325 --> 00:36:50,480 575 00:36:50,480 --> 00:36:52,850 Isso deve olhar realmente familiar para vocês. 576 00:36:52,850 --> 00:36:55,940 577 00:36:55,940 --> 00:36:59,680 Desculpe, isso é culpa minha. 578 00:36:59,680 --> 00:37:15,790 579 00:37:15,790 --> 00:37:18,120 Tudo bem, legal. 580 00:37:18,120 --> 00:37:22,710 Essa lógica deve olhar muito familiar para vocês, especialmente apenas Mario. 581 00:37:22,710 --> 00:37:26,140 >> Mas agora vamos imprimir a o console a cada momento, 582 00:37:26,140 --> 00:37:29,280 porque queremos manter de alguma forma a par do que estamos imprimindo. 583 00:37:29,280 --> 00:37:31,810 Nós vamos usar o resulta de alguma forma, mais tarde, 584 00:37:31,810 --> 00:37:35,010 para exibir a impressão a resultar para o usuário. 585 00:37:35,010 --> 00:37:37,730 Então, ao invés, nós somos apenas nslogging tudo, 586 00:37:37,730 --> 00:37:42,410 que nós estamos armazenando tudo em um resultado chamada de função, 587 00:37:42,410 --> 00:37:44,070 mas a lógica é exactamente o mesmo. 588 00:37:44,070 --> 00:37:48,030 589 00:37:48,030 --> 00:37:51,800 Depois que terminar, nós basta imprimir os nossos resultados. 590 00:37:51,800 --> 00:37:59,330 591 00:37:59,330 --> 00:38:04,970 >> E aqui em vez de imprimir o meu nome, vamos chamar uma função. 592 00:38:04,970 --> 00:38:15,340 593 00:38:15,340 --> 00:38:18,090 Vamos ver o que acontece. 594 00:38:18,090 --> 00:38:21,240 Oops, obviamente. 595 00:38:21,240 --> 00:38:24,320 Nós temos um bom pouco pirâmide aqui fora. 596 00:38:24,320 --> 00:38:28,370 Este é basicamente C, nós somos apenas manipulação de onde você chamar uma função 597 00:38:28,370 --> 00:38:30,010 e como é que uma função parecida. 598 00:38:30,010 --> 00:38:31,560 Não há nada de diferente. 599 00:38:31,560 --> 00:38:34,040 Mas esta é realmente não muito emocionante aqui, 600 00:38:34,040 --> 00:38:37,500 porque nós não estamos vendo nada do aplicativo para iPhone. 601 00:38:37,500 --> 00:38:42,120 >> Então, se você realmente tem um iPhone app-- se você realmente tem direito Mario iOS 602 00:38:42,120 --> 00:38:45,080 Agora, você não vai para ver tudo o que 603 00:38:45,080 --> 00:38:49,450 tem alguma coisa a ver com Mario porque todas aquelas saídas em um console 604 00:38:49,450 --> 00:38:51,620 estão escondidos de um usuário. 605 00:38:51,620 --> 00:38:53,850 Isto é o que você vê, que é "Olá mundo !!!" 606 00:38:53,850 --> 00:38:55,720 Não é bom. 607 00:38:55,720 --> 00:39:03,090 Agora vamos tentar fazer com que o usuário veja o que exatamente estamos imprimindo. 608 00:39:03,090 --> 00:39:06,000 Então, nós não precisamos de rotular mais. 609 00:39:06,000 --> 00:39:09,800 Vamos tentar descobrir alguma coisa outra coisa que possa ser útil. 610 00:39:09,800 --> 00:39:12,140 >> Na verdade, existe uma elemento que é chamado 611 00:39:12,140 --> 00:39:16,460 campo de texto, o que poderia ser muito útil para nós. 612 00:39:16,460 --> 00:39:19,880 Basicamente, exibe uma região de texto que pode ser editado. 613 00:39:19,880 --> 00:39:22,320 Assim que parece realmente útil. 614 00:39:22,320 --> 00:39:23,810 Agora vamos arrastá-lo e soltá-lo. 615 00:39:23,810 --> 00:39:26,880 616 00:39:26,880 --> 00:39:32,670 Uau, temos uma visão de texto a nosso ver, muito chique. 617 00:39:32,670 --> 00:39:35,430 Isso é um pouco grande demais. 618 00:39:35,430 --> 00:39:38,150 Vamos torná-lo menor. 619 00:39:38,150 --> 00:39:40,290 Colocá-lo para o centro. 620 00:39:40,290 --> 00:39:43,760 Torná-lo menor também. 621 00:39:43,760 --> 00:39:50,110 >> Agora, temos uma vista de texto, o que poderíamos ser utilizado para exibir o nosso resultado final. 622 00:39:50,110 --> 00:39:52,860 Mas agora é definitivamente não vai funcionar 623 00:39:52,860 --> 00:39:56,970 porque não é o Não-- ViewController acabamos 624 00:39:56,970 --> 00:40:03,010 definido não sabe que há uma exibição de texto lá fora. 625 00:40:03,010 --> 00:40:06,550 Então, precisamos de alguma forma ligar a exibição de texto que acabamos 626 00:40:06,550 --> 00:40:11,660 criado com a classe que já veio com a gente. 627 00:40:11,660 --> 00:40:14,860 >> A nossa forma de fazer isso é na verdade, realmente mágico. 628 00:40:14,860 --> 00:40:18,190 Então abra storyboard. 629 00:40:18,190 --> 00:40:22,220 Há um especial [inaudível] chamado [? assistente?] [inaudível]. 630 00:40:22,220 --> 00:40:25,190 Quando você clicar em que, é vai abrir dois arquivos. 631 00:40:25,190 --> 00:40:29,425 Um deles é uma classe e outra é uma vista que corresponde para isso. 632 00:40:29,425 --> 00:40:31,920 É muito, muito útil. 633 00:40:31,920 --> 00:40:35,950 E vamos apenas atravessa o arquivo .h. 634 00:40:35,950 --> 00:40:39,110 Controle, este é [inaudível] a lógica. 635 00:40:39,110 --> 00:40:47,280 Pressione a tecla Control e arraste o exibição de texto para a declaração. 636 00:40:47,280 --> 00:40:48,780 Vamos chamar esse outputView. 637 00:40:48,780 --> 00:40:52,189 638 00:40:52,189 --> 00:40:53,670 Conecte-se. 639 00:40:53,670 --> 00:40:59,420 Então, aqui temos declarado um novo propriedade para a nossa classe ViewController. 640 00:40:59,420 --> 00:41:02,300 E a nova propriedade é apenas o ponto de vista de texto 641 00:41:02,300 --> 00:41:05,000 nós criamos no edifício interface. 642 00:41:05,000 --> 00:41:07,990 Então, dessa forma poderíamos o acesso de todos os dados 643 00:41:07,990 --> 00:41:13,630 e manipular tudo o que está dentro o ponto de vista de produção, que é incrível. 644 00:41:13,630 --> 00:41:19,260 >> Assim, em nosso código atual, vamos fazer alguma coisa com ele. 645 00:41:19,260 --> 00:41:23,810 Então, neste momento em que nós somos como impressão o resultado final para Mario, 646 00:41:23,810 --> 00:41:28,020 estamos em não registrando nada. 647 00:41:28,020 --> 00:41:30,080 Quero dizer que poderia manter a declaração de registro. 648 00:41:30,080 --> 00:41:41,490 Além disso, nós enviar a leitura que acabamos 649 00:41:41,490 --> 00:41:47,622 criado para a exibição de saída, que é uma UI textview que acabamos de criar. 650 00:41:47,622 --> 00:41:48,746 Agora vamos ver o que acontece. 651 00:41:48,746 --> 00:41:54,470 652 00:41:54,470 --> 00:41:56,620 Uau. 653 00:41:56,620 --> 00:41:59,130 Temos uma pirâmide no app agora. 654 00:41:59,130 --> 00:42:06,720 >> Assim, o usuário pode ver a nossa saída, pois copiamos a saída do nosso código 655 00:42:06,720 --> 00:42:08,045 para a nossa interface. 656 00:42:08,045 --> 00:42:10,950 É muito bom. 657 00:42:10,950 --> 00:42:14,990 Na verdade não é que excitante porque nós can-- 658 00:42:14,990 --> 00:42:18,250 Todo o app está fazendo é mostrando uma pirâmide para você, 659 00:42:18,250 --> 00:42:20,520 e não há nada que você possa fazer sobre isso. 660 00:42:20,520 --> 00:42:22,330 Não é particularmente emocionante. 661 00:42:22,330 --> 00:42:27,840 Então agora vamos fazer um botão que irá limpar os pontos de vista. 662 00:42:27,840 --> 00:42:30,290 Parece que um botão será útil. 663 00:42:30,290 --> 00:42:33,270 Arraste e solte. 664 00:42:33,270 --> 00:42:33,900 Um botão. 665 00:42:33,900 --> 00:42:36,730 666 00:42:36,730 --> 00:42:37,320 Botão dois. 667 00:42:37,320 --> 00:42:49,170 668 00:42:49,170 --> 00:42:52,052 >> Então, quando eu clicar à esquerda botão, a vista deve limpar. 669 00:42:52,052 --> 00:42:53,635 Não deve haver nada na tela. 670 00:42:53,635 --> 00:42:56,970 E quando nós clique no botão direito, Mario, 671 00:42:56,970 --> 00:42:59,740 a vista vai aparecer novamente. 672 00:42:59,740 --> 00:43:05,510 Assim, desta forma nós também fazemos o material mágico, controle e arraste 673 00:43:05,510 --> 00:43:08,740 à declaração de classe no assistente director-- 674 00:43:08,740 --> 00:43:11,600 no assistente de espectador. 675 00:43:11,600 --> 00:43:18,620 Neste caso, estamos especificando que esta deve ser uma ação. 676 00:43:18,620 --> 00:43:19,120 clearMario. 677 00:43:19,120 --> 00:43:21,650 678 00:43:21,650 --> 00:43:26,830 >> Então, aqui já criamos uma ação chamada clearMario, 679 00:43:26,830 --> 00:43:34,210 que é o método que seria chamada sempre que pressionar o botão claro. 680 00:43:34,210 --> 00:43:41,030 Assim, em nosso código, na verdade, vamos apenas colocar o texto de saída ea vista de saída 681 00:43:41,030 --> 00:43:44,620 em nada, e de que maneira ela vai aparecer para ser claro. 682 00:43:44,620 --> 00:43:47,500 683 00:43:47,500 --> 00:43:57,230 Além disso, vamos criar outro método chamado runMario. 684 00:43:57,230 --> 00:44:00,140 685 00:44:00,140 --> 00:44:03,436 Oh, desculpe, isso não deve ser uma propriedade. 686 00:44:03,436 --> 00:44:12,107 687 00:44:12,107 --> 00:44:13,940 Tudo bem, que deveria ser uma ação bem. 688 00:44:13,940 --> 00:44:25,780 689 00:44:25,780 --> 00:44:34,740 >> E quando essa função é chamado, nós apenas executar Mario dez. 690 00:44:34,740 --> 00:44:37,620 691 00:44:37,620 --> 00:44:39,780 Esperemos que isso vai ficar bem. 692 00:44:39,780 --> 00:44:41,120 Será que compilar? 693 00:44:41,120 --> 00:44:43,920 Sim. 694 00:44:43,920 --> 00:44:45,090 Agora temos uma visão. 695 00:44:45,090 --> 00:44:46,560 Nós temos uma saída. 696 00:44:46,560 --> 00:44:50,040 E vamos ver o que acontece. 697 00:44:50,040 --> 00:44:52,590 Isso acabou. 698 00:44:52,590 --> 00:44:54,500 Ele está de volta novamente. 699 00:44:54,500 --> 00:44:57,620 Portanto, temos aqui especificado que tipo de função 700 00:44:57,620 --> 00:45:00,400 irá ser chamado quando nós digitar alguma coisa, 701 00:45:00,400 --> 00:45:03,160 quando se pressiona um botão específico. 702 00:45:03,160 --> 00:45:07,890 Este é basicamente o programa de acção alvo 703 00:45:07,890 --> 00:45:12,510 para evento dirigido programação em Objective C. 704 00:45:12,510 --> 00:45:15,030 >> Além de que, não é muito emocionante 705 00:45:15,030 --> 00:45:19,810 porque não podemos realmente mudar quão alto da pirâmide será, 706 00:45:19,810 --> 00:45:23,640 por isso, provavelmente vai querer de alguma forma obter uma entrada do usuário 707 00:45:23,640 --> 00:45:29,490 e alterar a altura do pirâmide com base no que eles saída. 708 00:45:29,490 --> 00:45:32,900 Então nós vamos fazer isso. 709 00:45:32,900 --> 00:45:38,720 Então, desta vez quando chamamos runMario, nós não apenas chamar Mario diretamente. 710 00:45:38,720 --> 00:46:06,280 711 00:46:06,280 --> 00:46:07,000 O título deste um. 712 00:46:07,000 --> 00:46:22,180 713 00:46:22,180 --> 00:46:23,700 >> Delegado. 714 00:46:23,700 --> 00:46:25,160 Isto é muito interessante. 715 00:46:25,160 --> 00:46:26,720 O que é um delegado? 716 00:46:26,720 --> 00:46:28,950 Eu vou colocar auto aqui. 717 00:46:28,950 --> 00:46:31,038 E vamos ver o que isso significa mais tarde. 718 00:46:31,038 --> 00:46:46,380 719 00:46:46,380 --> 00:46:51,120 Então aqui nós criamos basicamente um instância específica chamada de alerta UI 720 00:46:51,120 --> 00:46:52,210 view. 721 00:46:52,210 --> 00:46:54,440 A exibição de alerta é UI basicamente o que quiser 722 00:46:54,440 --> 00:46:58,940 vê cada vez que algo pops -se e pede-lhe para a entrada, 723 00:46:58,940 --> 00:47:03,080 como o que vai acontecer quando você está tentando para comprar algo em uma loja de aplicativos. 724 00:47:03,080 --> 00:47:14,250 >> Além de que, depois de criá-lo, nós apenas mostrar o alerta. 725 00:47:14,250 --> 00:47:20,090 726 00:47:20,090 --> 00:47:22,568 Tudo bem, vamos apenas rapidamente teste isso vai funcionar ou não. 727 00:47:22,568 --> 00:47:31,105 728 00:47:31,105 --> 00:47:32,140 Isso é muito legal. 729 00:47:32,140 --> 00:47:55,370 730 00:47:55,370 --> 00:47:59,120 Agora vamos realmente criar uma campo de entrada para o alerta de UI. 731 00:47:59,120 --> 00:48:01,170 Esta é a forma como fazemos isso. 732 00:48:01,170 --> 00:48:07,490 E devemos ter um vista de entrada para o alerta. 733 00:48:07,490 --> 00:48:09,020 Muito legal. 734 00:48:09,020 --> 00:48:12,330 Vamos apenas dizer que 10. 735 00:48:12,330 --> 00:48:14,900 >> Ele não está fazendo nada direito agora, porque a chamada, na verdade, 736 00:48:14,900 --> 00:48:17,770 não se alterou para a execução de mario. 737 00:48:17,770 --> 00:48:23,470 Portanto, este tornou-se um pouco pouco estranho porque sempre 738 00:48:23,470 --> 00:48:30,790 nós pressionar um botão para baixo, sempre que pressionar um botão na exibição de alerta, 739 00:48:30,790 --> 00:48:35,560 algo acontecer, mas isso não acontece. 740 00:48:35,560 --> 00:48:37,220 Como é que vamos pegar isso? 741 00:48:37,220 --> 00:48:41,280 Como sabemos que um usuário rejeitou uma exibição de alerta 742 00:48:41,280 --> 00:48:45,630 e já entrou em um número, porque agora nada está realmente acontecendo. 743 00:48:45,630 --> 00:48:50,450 >> Bem, você deve ter adivinhado -lo direito, a delegação. 744 00:48:50,450 --> 00:48:55,440 Assim, além de tudo estas declarações, 745 00:48:55,440 --> 00:49:03,190 precisamos adicionar uma nova delegação de que chamou de UI vista alerta delegado. 746 00:49:03,190 --> 00:49:06,440 Assim que cada interacção ou evento 747 00:49:06,440 --> 00:49:10,190 que nós vamos ter com a exibição de alerta UI 748 00:49:10,190 --> 00:49:14,100 vai ser tratada por nossa classe também. 749 00:49:14,100 --> 00:49:26,297 >> Assim, além de que, será botão de visualização clique alerta no índice. 750 00:49:26,297 --> 00:49:34,260 751 00:49:34,260 --> 00:49:37,730 Isto é alcançado. 752 00:49:37,730 --> 00:49:42,020 Assim, nesse caso, temos já-- por isso temos 753 00:49:42,020 --> 00:49:46,210 descobri um protocolo que vai lidar com o evento quando 754 00:49:46,210 --> 00:49:51,320 clicamos no botão Concluído na exibição de alerta. 755 00:49:51,320 --> 00:49:55,976 Então, cada vez que demitir o exibição de alerta, isso deve acontecer. 756 00:49:55,976 --> 00:49:57,350 Deixe-me apenas testá-lo muito rapidamente. 757 00:49:57,350 --> 00:50:16,220 758 00:50:16,220 --> 00:50:19,300 Bem, na verdade, chegámos aqui. 759 00:50:19,300 --> 00:50:22,210 >> Então, aqui, o que não vai na verdade é, na verdade, 760 00:50:22,210 --> 00:50:43,120 obter as-- Por isso, queremos sair o texto que temos anteriormente 761 00:50:43,120 --> 00:50:45,350 entrou na exibição de alerta. 762 00:50:45,350 --> 00:50:48,505 E com base em texto, estamos vai exibir Mário. 763 00:50:48,505 --> 00:50:52,336 764 00:50:52,336 --> 00:50:55,480 Isso transforma muito rapidamente para fora se ele realmente funciona ou não. 765 00:50:55,480 --> 00:50:59,476 Então, nesse caso, se a entrada, vamos dizer, 10, devemos ver 10. 766 00:50:59,476 --> 00:51:02,740 767 00:51:02,740 --> 00:51:05,210 >> Muito bom, nós temos um número aqui. 768 00:51:05,210 --> 00:51:06,470 É muito bom. 769 00:51:06,470 --> 00:51:16,840 Agora, a última etapa será ser-- Assim, o último passo que precisamos fazer agora 770 00:51:16,840 --> 00:51:21,100 é apenas uma chamada com Mario com base no nível de entrada 771 00:51:21,100 --> 00:51:23,270 que temos colocado em exibição de alerta. 772 00:51:23,270 --> 00:51:26,920 Então, precisamos converter essa string para iOS. 773 00:51:26,920 --> 00:51:33,820 774 00:51:33,820 --> 00:51:35,496 Transbordamento estático é muito impressionante. 775 00:51:35,496 --> 00:51:44,930 776 00:51:44,930 --> 00:51:51,182 E, depois, é só chamar auto valor marioWithLevels. 777 00:51:51,182 --> 00:51:54,550 778 00:51:54,550 --> 00:51:56,284 Vamos ver o que vai realmente funciona ou não. 779 00:51:56,284 --> 00:51:59,070 780 00:51:59,070 --> 00:52:01,550 >> Nós já estamos dada uma pirâmide. 781 00:52:01,550 --> 00:52:04,785 Vamos tentar mudar a altura. 782 00:52:04,785 --> 00:52:06,530 Isso realmente funciona. 783 00:52:06,530 --> 00:52:07,610 É muito legal. 784 00:52:07,610 --> 00:52:10,420 De modo que agora você pode apenas entrada de qualquer valor que você quer. 785 00:52:10,420 --> 00:52:12,440 Vamos apenas dizer que quatro. 786 00:52:12,440 --> 00:52:14,260 Isso é muito legal. 787 00:52:14,260 --> 00:52:17,090 Portanto, este é basicamente um exemplo muito rápido 788 00:52:17,090 --> 00:52:23,170 Para saber como criar um projeto em código s e como fio realmente rapidamente 789 00:52:23,170 --> 00:52:26,220 alguns eventos realmente simples e funções. 790 00:52:26,220 --> 00:52:28,840 >> Assim, a fonte está indo para ser colocado on-line mais tarde. 791 00:52:28,840 --> 00:52:33,400 Então, se você estiver interessado em Mario funciona como IOS, 792 00:52:33,400 --> 00:52:38,360 Eu vou colocar exatamente o mesmo projetos para o site do CS50 mais tarde. 793 00:52:38,360 --> 00:52:41,260 Nós somos feitos, basicamente, com a verão, e antes de terminarmos 794 00:52:41,260 --> 00:52:45,190 Eu só quero que você aponte para caras alguns recursos realmente impressionantes de que 795 00:52:45,190 --> 00:52:47,550 estão disponíveis online. 796 00:52:47,550 --> 00:52:52,270 >> Obviamente, a documentação da Apple vai ser muito útil. 797 00:52:52,270 --> 00:52:57,630 Mas, para além disso, I especialmente Recomendamos quatro fontes, escola de código, 798 00:52:57,630 --> 00:53:02,120 casa na árvore, e AppCoda WWDC vídeos. 799 00:53:02,120 --> 00:53:07,270 Código escola e casa da árvore são dois sites Educadoras on-line, 800 00:53:07,270 --> 00:53:10,210 que especificamente se concentrar em engenharia de software. 801 00:53:10,210 --> 00:53:16,930 Especialmente para a escola código, eles tem realmente bom tutorial on iOS. 802 00:53:16,930 --> 00:53:19,550 >> Esse é um exemplo muito rápido para ele. 803 00:53:19,550 --> 00:53:22,980 Eles, na verdade, criar um realmente cute-- olhar para aquele pequeno iPhone bonito 804 00:53:22,980 --> 00:53:24,920 gajo lá, é bastante impressionante. 805 00:53:24,920 --> 00:53:31,010 E a maneira como eles explicam Objetivo Sintaxe C é perfeitamente claro. 806 00:53:31,010 --> 00:53:32,230 Casa na árvore é a mesma. 807 00:53:32,230 --> 00:53:34,660 E AppCoda é um fórum. 808 00:53:34,660 --> 00:53:38,130 Na verdade, é um blog que foi executado por um muito experiente Objective C 809 00:53:38,130 --> 00:53:39,120 programador. 810 00:53:39,120 --> 00:53:43,950 E todos esses tutoriais em AppCoda são muito curto e fácil de implementar, 811 00:53:43,950 --> 00:53:45,390 altamente recomendado. 812 00:53:45,390 --> 00:53:47,700 >> E se você é um desenvolvedor, definitivamente ir verificar 813 00:53:47,700 --> 00:53:55,660 como os vídeos da WWDC, onde você pode aprender sobre a última programação iOS 814 00:53:55,660 --> 00:53:58,250 técnicas, APIs e bibliotecas. 815 00:53:58,250 --> 00:54:02,850 Então, isso é muito bonito -lo para o seminário. 816 00:54:02,850 --> 00:54:03,820 Muito obrigado. 817 00:54:03,820 --> 00:54:08,040 E eu espero que você se divertir criar o seu próprio app iOS. 818 00:54:08,040 --> 00:54:09,302