>> Tianyu LIU: Ei, como é que vai todo mundo?
E este é o iOS App Programação do objectivo c seminário.
E meu nome é Tianyu Liu.
Eu sou um júnior Lowell agora, concentrando-se em ciência da computação.
Portanto, neste seminário que eu sou vai ensinar a vocês
um pouco sobre como fazer um app.
Yay, ficar animado para ele.
>> Assim, antes mesmo de começar o mergulho para o lado de programação real,
vamos apenas falar sobre muito rapidamente por que você pode querer construir um app iOS?
Por que é tão incrível iOS?
Assim, o primeiro problema, o primeiro coisa que é muito legal para nós,
especialmente como um CS50 estudante, é que iOS
usa Objective C. Bem, há uma nova linguagem chamada Swift,
mas nós não vamos usar que neste seminário.
Se você estiver interessado em Swift, há é um seminário independente sobre isso.
Mas Objective C é basicamente um super conjunto de C. Significado
que tudo o que você pode usar em C ser traduzido em Objective C
muito facilmente.
>> Como você pode ver mais tarde, que na verdade há alguma sintaxe muito básico, são
basicamente exatamente o mesmo, C e Objective C. Então,
desde que você tenha tomado CS50 -se até aqui, você já
Objectivo sabe C, pelo menos 40%.
Além disso, a Apple tem um realmente API robusto para iOS.
Há um monte de muito louco coisas que você pode fazer com ele.
Um dos quais é alguém realmente criou um app iOS
para carros de controle, que é bastante interessante.
Provavelmente, um helicóptero é mais emocionante.
Mas isso é o quão poderoso API iOS pode ser.
>> E como você pode ter descobri agora,
o estouro de pilha é provavelmente um dos os mais importantes recursos on-line
disponível para você.
E uma boa notícia, para cada único problema que você pode, possivelmente,
pensar ao construir o seu projeto final em Objective C,
é provável que exista uma resposta de estouro de pilha.
É simplesmente fantástico.
Além de que, iOS é realmente uma plataforma
onde você pode chegar a uma enorme audiência com pouco esforço.
Não é como o Android, onde está tudo muito fragmentado.
>> Tudo iOS é unificado.
E enquanto você cria um aplicativo para o iPhone,
Você pode facilmente porta que para iPad, iPad mini, ou de diferentes tamanhos para iPhone.
Estes são todos realmente conveniente.
E é realmente muito bom para impressionar seus amigos.
Você pode apenas realizar um iPhone e diga ao seu amigo hey,
este é o aplicativo que eu faço.
Você pode fazer isso por qualquer aplicativos de desktop, que é bom.
>> Tudo bem, agora vamos realmente começar na linguagem Objective C.
Então, por que não começar com alguma sintaxe muito básico.
Como mencionei antes Objetivo C É basicamente um super conjunto de C.
Então, um monte de sintaxe básica são na verdade, exatamente o mesmo.
Declarando uma variável e adição de duas variáveis ​​em conjunto
é exatamente como fizemos no Mario.
Nada de novo aqui.
>> Da mesma forma, o inquilino for loop e condição também é o mesmo.
Você pode fazer um loop, assim como você já fez em um Mario [inaudível].
E você pode fazer condições assim como o que você
vêm fazendo em seus sets p anteriores.
No entanto, Objective C não é completamente C,
e não é algo que é uma espécie de estranho nisso.
>> A primeira delas é que quando você está fazendo programação C, que normalmente chamamos
incluir e, em seguida, um nome de biblioteca.
Mas em Objective C você chama isso de importação.
Basicamente dizendo funcionalidade, apenas nomes diferentes.
E as cordas são na verdade, um pouco estranho.
Você pode ver que o primeiro coisa que é meio estranho
é que você tem uma bela weird-- sorry-- você tem NS muito estranho
assinar aqui.
E a segunda coisa isso é meio estranho
se você tem uma arroba antes na verdade, declarando a string.
Assim, o sinal de arroba basicamente significa que uma corda não é apenas uma corda,
na verdade é um objeto.
Nós vamos explicar que mais tarde, então não fazer
pânico se não o fizer compreender o que isso significa.
E a impressão para o console é um pouco diferente, porque em C chamamos printf,
mas em Objective C chamamos [inaudível].
>> Você pode estar se perguntando o que é isso.
Isto é, basicamente, printf, apenas um idioma diferente.
Exatamente o mesmo uso, exactamente a mesma funcionalidade.
Bem, acontece que Objective C, na verdade,
tem um prefixo ns em quase tudo, todos os tipos de dados básicos,
NSString, NSArray, NSDictionary.
A razão é que ns realmente significa Next Step,
que é uma empresa que Steve Jobs fundou,
que é uma empresa em que o linguagem Objective C nasce.
Portanto, esta é basicamente a tradição.
Eu sei que é um pouco estranho, mas é a Apple.
>> Então, algo que é ainda mais estranho do que isso é uma declaração de função.
Isso é muito diferente do que nós ver em C, porque aqui, na verdade,
não se parece com C anymore.
O que você tem aqui-- pelo forma como este não é um ponto de bala,
este é um sinal de menos.
Você tem um parêntese sinal de menos vazio e, em seguida, o nome da função.
Vamos apenas dizer que se nós Olá mundo tem, então
o tipo de retorno seria nula porque nós retornar nada.
>> O que fica realmente estranho é que quando você está
Tendo mais do que um parâmetro passando para uma mesma função que
vai ser muito estranho, como mostrado aqui.
Temos um nome do método, addInt chamado para [inaudível]
e nós estamos passando um parâmetro.
Mas depois disso, nós temos mais chamada nome do método com.
E depois com o que estamos passando o segundo parâmetro.
Este é realmente um pouco estranho, mas todas essas declarações de função
seguem o mesmo padrão como este.
>> Nós temos um sinal de menos para começar.
O sinal negativo pode ser um sinal de mais às vezes com base em que tipo de método
é isso.
Método é basicamente outro nome para a função.
E nós vamos explicam que mais tarde, quando
estamos falando de objeto programação orientada.
Primeiro você especificar o retorno digite parênteses dentro,
após o qual vem o nome do método.
Você está passando um parâmetro.
E se você tem mais parâmetros você precisa estender o nome do método
e, basicamente, escrever algo mais aqui.
>> Poderia ser qualquer coisa que você quiser.
No nosso caso, é com.
Mas você poderia dizer final, ou, ou, ou abc bar completo, o que quiser.
E, depois que você é passando parâmetro b.
Este é realmente um estranho convenção, mas estamos
vai ver por que a Apple queria para fazer isso muito rapidamente.
Então, como você chamar a função?
Chamar uma função em Objective C também é diferente da C.
>> Na verdade, chamar um função em Objective C
é mais como se você estivesse conversando com alguém.
Aqui nós temos auto, que é chamado de um objeto.
Você está basicamente dizendo a objeto de auto de dizer "Olá mundo!"
Essa é a forma de chamar a função.
Um objeto e um nome de método combinadas entre si.
E é aí que a extensão estranho para o nome do método realmente entra em jogo.
>> Vamos olhar para o segundo exemplo.
Nós acabamos de definir um método chamado addInt com blá blá blá.
Portanto, neste caso, quando você está chamando que [específico? mensagem?] ele vai
para olhar como auto addInt: 10 com: 2.
Parece Inglês.
Embora a função declaração de função é estranho,
Do ponto de C do Objectivo método padrão de declaração,
é que quando você está chamando a função ou método
ele vai soar como o Inglês real.
Portanto, é muito intuitivo uma vez que você se acostuma.
>> Especialmente neste caso, onde você pode basicamente
ver que o nome da função é tipo de documentação de si mesmo.
Você não precisa de nenhum mais explicação para ver
o que exatamente está acontecendo, o que exatamente um parâmetro fazendo.
Indo além disso, vamos falar um pouco pouco sobre programação orientada a objeto.
Programação orientada a objeto é um dos fundamental de programação
técnicas ou padrões que é usado por Objective C. Objective C
é chamado Objectivo C, não C, por uma razão muito boa.
>> Então, antes de entrar em Sintaxe Objective C,
Vamos realmente rapidamente olhar para o que exatamente é um objeto.
Nós provavelmente tenha feito algo como objeto antes, que
é chamado de struct quando você está implementação de uma árvore ou uma lista ligada
ou [? tentar. ?] Então, é basicamente como um struct,
mas é muito mais poderoso do que isso.
Um objeto tem métodos e propriedades.
Os métodos são basicamente funções.
Basicamente funciona que um específico para um determinado objeto.
>> E as propriedades são basicamente os campo que você especificar no struct.
Assim, para cada objeto temos alguma propriedade
que tem algumas variáveis ​​que são específicos para o objecto.
E nós temos algumas funções que também são específicas para o objecto.
E as funções são chamadas de métodos e as variáveis ​​são chamadas de propriedades.
É apenas um nome fantasia.
Enquanto você verdade, cada visão única você vê enquanto abre um app iOS,
vamos apenas dizer que o Twitter ou o Facebook, cada única visão que você vê é um objeto.
E mesmo todo o app é um objeto para começar.
Conceito muito interessante.
>> E por que nós queremos objeto programação orientada?
Então você pode imaginar que quando você programa torna-se bastante complicado.
Vamos apenas dizer que quando você está implementação de tabuleiro de xadrez,
a lógica vai ser realmente complicado.
Você tem 36 diferentes peças, de modo a que se
quero escrever lógica para todos 36 peças diferentes em xadrez,
que vai ser um monte de diferentes funções e variáveis.
É um monte de problemas.
E, provavelmente, você vai escrever uma método diferente ou função diferente
para cada uma das peças de exatamente controlar o que eles fazem.
>> Mas se você fizer orientada a objeto programação, todas estas peças
pode ser resumido em um único objeto.
E o objeto terá alguma comum propriedades, como que tipo de peça
é isso?
Qual é a cor?
Como é que pode se mover?
E dessa forma você tem muito simplificou a lógica do mesmo.
Então é só uma boa maneira para fazer programas complicados,
e relação hierárquica dentro do programa, muito simples.
Como vamos ver por isso muito rapidamente quando
na verdade estamos fazendo programming-- quando estamos realmente
fazendo um código S programação sessão mais tarde.
>> Bem além de que, programação orientada a objeto
é apenas um monte de diversão.
Você tem que criar seu próprio objeto.
Você tem que projetar o que faz -lo parecido com você mesmo.
Não há resposta certa para isso.
E é totalmente interessante.
Assim, em programação orientada a objetos, dois conceitos fundamentais
vai ser de classe e instância.
A classe é basicamente um modelo de objecto.
E um exemplo é basicamente um objeto específico.
>> Vamos apenas dizer que você está fazendo um cookie.
Neste caso, cada cookie que você realmente acabar com
vai ser um objeto.
Mas a placa de cookie que você usar para assar todos os cookies serão uma classe.
A classe é basicamente um modelo.
E o exemplo será um específico objeto criado a partir dessa classe.
>> E uma instância será criada com base na declaração de classe,
como veremos em lâminas posteriores.
Então vamos realmente fazem um exemplo rápido [inaudível].
Vamos dizer que estamos declarando um objeto para um gato.
O objeto deve have-- a classe gato deve
tem algumas propriedades e métodos.
Que tipo de propriedades devem os classe have-- deve o gato tem?
>> Por exemplo, a cor, idade e raça, os
variáveis ​​que serão são específicos para cada gato.
E essas são algumas coisas que usamos para descrever um gato.
Que tipo de método, ou o que pode fazer um gato?
Alguns exemplos rápidos seria perseguição rato, comer peixe ou apenas miar.
Este é realmente um rápido exemplo de classe gato.
E realmente um específico cat objeto será um gato
onde se especifique o cor, idade e raça.
>> Nesse caso, o nosso objectivo é já não uma classe mais.
Nós copiar o modelo da classe e especificamos cada informação específica
para esse objeto específico para torná-lo independente.
E quando você está chamando um método dentro de um objeto,
você acabou de chamar meow sobre o objeto, que é o gato que você acabou de criar.
>> Provavelmente você irá imprimir algo como "Olá mundo!
Miau. "
Muito bonito.
Tudo bem, vamos apenas entrar em alguns detalhes
e ver o que faz exatamente esse traduzir-se em estar programação iOS.
Assim, em iOS programando cada classe será implementado em dois arquivos.
Um arquivo é aqui, que é chamada a interface.
Outro arquivo é aqui, que é chamado de execução.
>> Tipicamente a interface terá extension.h
como vimos em bibliotecas C.
E arquivo de implementação é vai ter extension.n.
É uma espécie de estranho.
Mas .n significa, na verdade, .c, não há diferença fundamental entre os
dois.
Portanto, neste caso, podemos ver que nós somos declarando interface, Cat: objeto.
Isso é chamado de herança.
Nós estamos, basicamente, herdando a classe gato da classe de objeto.
Assim, a cada propriedade e método que era previamente definido na classe de objeto
será automaticamente definido em uma classe gato também.
>> Além disso, define-se a cor, raça e idade, três variáveis.
Isso realmente parece algo que você fez antes.
Parece que struct.
Isto é, basicamente, a sintaxe para declaração struct,
e que é totalmente correcta.
E desde que eu mencionei antes, a diferença que um struct
e um objecto, um dos diferenças fundamentais
é um objecto que tem método, enquanto que apenas tem uma estrutura variáveis.
Assim, em adição às propriedades ou variáveis ​​que criamos para o objeto,
especificamos algum método.
>> Vamos apenas dizer que temos aqui dois métodos, um é Meow,
outra é rato perseguição.
Nós provavelmente vai querer estar passando um parâmetro com base em nosso método anterior
padrão de declaração.
Você provavelmente vai querer estar passando um mouse.
E você provavelmente vai querer para retornar um significante bool
Se o seu gato tem com sucesso pegou o mouse ou não.
>> Esta é a interface, mas podemos ver que a interface realmente
não faz nada.
Ele apenas diz um programa que exists-- o que existe na classe gato.
Assim, para que o programa para fazer alguma coisa,
precisamos ter arquivos de implementação.
Então, aqui, a primeira coisa que fazemos é obviamente, nós importamos a interface.
Depois de importar o interface, define-se o método.
>> Vamos apenas dizer que aqui miau seria apenas imprimir
"Olá Mundo!" para o console.
E após a implementação arquivo, que está muito bem feito.
Esta é basicamente uma classe declaração de uma classe.
Então, agora a questão torna-se, Como você declarar uma variável?
A maneira como você usa uma classe para criar uma objeto em Objective C está escrito aqui.
>> Primeiro você especificar que este é um ponteiro gato,
porque cada objeto em Objective C finalmente é implementado como um ponteiro.
E você chamar a classe, chamá-los como alocação, que é basicamente malloc,
dizendo o sistema operacional que você precisa de algum espaço de memória para este objeto.
Depois que você tem um objeto já e você só inicialize-o.
Esta é apenas uma convenção.
Eu sei que é um pouco estranho, mas este é, na verdade, como a Apple faz coisas.
>> Atribuição de propriedades é na verdade, bastante simples.
É muito semelhante ao o que você está fazendo quando
você está atribuindo alguns específicos campo dentro de struct.
Você só tem a variável nome, o nome da propriedade,
e atribuir um valor específico a ele.
E chamando um método é muito semelhante.
A chamada de um método é basicamente o que eu falo sobre
para chamar qualquer método em Objective C.
>> Você está passando um objeto, em Neste caso, vai ser myCat,
e você está passando o nome do método.
Como se você estivesse falando para o objeto, myCat, que você deve miar.
É muito interessante.
Depois disso, há um padrão de design mais essencial
que nós precisamos conversar sobre antes de chegar ao código S real.
Esse padrão de design é chamado evento dirigido programação.
Isto também é, provavelmente, um dos mais idéias fundamentais na programação iOS.
>> Então você provavelmente não sabe o que exatamente é a programação do evento conduzido,
mas não é realmente tão assustador.
Bem, na verdade, você tem já fiz isso antes.
Esta é uma das linhas que você provavelmente já escrito na última [inaudível]
de CS50, google.maps.event.addListener (marcador,
"Clique", function () {}) :.
Ao chamar esta linha que você está essencialmente dizendo ao computador
que sempre que o evento de chamada "Click" acontece no marcador,
usar essa função.
>> Isto é muito diferente o que você faz em mario.c.
Em mario.c basta executar o programa uma vez, dá-lhe uma saída,
e está feito.
Trata-se de uma espécie de como um programas de tiro.
Programas dirigidos por eventos são muito, muito diferente.
Vamos imaginar que, se o Facebook é um programa de tiro não é realmente bom.
Você acabou de ir ao Facebook uma vez e ele é feito.
Dá-lhe alguma saída e você nunca consegui-lo de volta.
Você nunca tem nada de mais.
>> Então, aqui, especialmente o padrão que usamos é
evento dirigido, de modo que Cada função
ser pego com base no que evento que aconteceu.
Por exemplo, se tivermos um botão e nós especificamos
que sempre que o botão é clicado, chamar a função chamada "Olá mundo!"
Dessa forma nós podemos realmente gerenciar a lógica função
fluir de uma maneira altamente flexível.
O usuário pode fazer ou chamar uma função que já foi chamado.
É completamente baseado em que os usuários fazem.
>> Assim, podemos ver que este é na verdade, muito melhor do que mario.c.
E boa notícia é que é na verdade, não é um conceito novo.
Vocês já fizeram que no último conjunto de problemas.
Assim, em Objective C existem três diagramas diferentes
para evento dirigido programação.
O primeiro diagrama é chamou a ação de destino,
onde você ligar um botão imprensa com alguma função.
Vamos apenas dizer que, sempre que você clicar algum botão, você chamar alguma função.
Isto é muito simples ação de destino.
>> O segundo é na verdade, o mais difícil,
ele é chamado de delegação no protocolo.
Nós vamos explicar que em grande detalhe mais tarde.
E a terceira via é a notificação.
Este não é, na verdade muito importante no que diz
quanto nós estamos preocupados, porque a chance que você está indo para usar notificação
em seu projeto final é bastante baixo.
Então, vamos pular essa parte.
>> E nós estamos indo para mergulhar em delegação no protocolo.
Então, o que exatamente é um protocolo?
Ou o que é exatamente uma delegação?
Vamos falar sobre o protocolo para começar.
Os protocolos são nada além de eventos.
Mas estes eventos são dadas aos você pela Apple para começar.
Por exemplo, eu não sou completamente certo quantos de vocês
caras uso original da Apple correio aplicativo ou contato,
mas cada vez que se desloca a tabela e pressione a célula específica
em cima da mesa, que é um evento.
>> E se você quer fazer esse evento por si mesmo,
na verdade é um pouco difícil.
Assim, a Apple tem dado que, mesmo para você de modo que você pode apenas usar diretamente
o evento para fazer algo em seu próprio país.
Os protocolos são, na verdade, realmente, realmente muito utilizado
em Objective C. Bem em verdade, cada app único
tem algo chamou app delegado.
Dentro de delicado é de todos os protocolos para carregar o app.
>> Vamos apenas dizer que há um evento para o app fez carga.
Então, o que deve acontecer depois que você criou um aplicativo, depois de abrir o app,
depois de fechar o aplicativo, ou depois você colocar o iPhone para dormir.
Estes são todos os eventos que possui já foi dado a você.
E originalmente dentro destas partículas haverá nenhuma implementação.
A Apple acaba de lhe disse que esta função vai acontecer quando ocorrer algum evento,
mas o que você faz com que função é completamente até você.
>> Delegação é basicamente dizendo a classe
que você deve lidar com esses protocolos.
É um pouco confusa, mas será
muito mais clara quando fazemos os códigos s em acção.
Delegação de protocolo é realmente um mecanismo muito robusto no sentido
que se fizermos delegação para uma classe específica,
podemos essencialmente lidar com todos os tipos de eventos
usando qualquer classe que temos, ferramenta muito conveniente.
>> Então, um exemplo rápido para delegação no protocolo
será que eu acabei de falar.
Este protocolo é chamado especificamente tableview [inaudível] selecionar papel
no [? índice?] [? passado. ?] Portanto, este um evento que seria pego quando você
realmente tocar em um específico célula do seu tableview,
vamos apenas dizer que em seu e-mail ou em seu aplicativo de contatos.
>> Dentro de uma função havia originalmente não fazer nada.
A função não faz fazer qualquer coisa por padrão.
Mas você pode especificar que a função faz,
dado o que você quer da sua aplicação.
Uma ferramenta muito conveniente.
E com tudo isso Dito isto, eu basicamente
cobrir alguma sintaxe muito básico e conceito fundamental para Objective C
programação, e nós podemos fazer algum código s.
Muito mais emocionante.
Assim s código é realmente um pouco esmagadora
quando você abri-lo pela primeira vez.
>> Uma nota rápida, por isso, se você quer fazer o desenvolvimento iOS,
Eu recomendo que você tem um Mac.
Porque fazendo o desenvolvimento iOS em Windows é muito, muito difícil.
É factível, mas é realmente difícil.
E você definitivamente não quiser usar g edição.
Assim, em s código temos várias áreas diferentes.
Quando você abre pela primeira vez s código você verá uma área de navegação,
que basicamente mostra toda a arquivos que está em seu projeto atual.
>> Você tem uma área de barra de ferramentas, que é basicamente gerir pontos de vista,
ou algum pequeno e rápido ferramentas cerca s próprio código.
E esta é a área real editor.
Esta área é muito semelhante g editar, mas muito melhor do que g edição.
E nesta área do direito, é chamada a área de utilidade.
A área se torna realmente útil quando você está criando interface ou especificando
algumas configurações rápidas para o seu app.
>> E a área final é a depuração.
Esta área contém o console.
Assim, sempre que você diz printf, ou NSLog no nosso caso,
todos os seus resultados são vai ser impresso aqui.
Tudo certo?
Eu acho que nós podemos realmente fazer rapidamente um exemplo para a programação iOS.
E vamos realmente abrir código-se s.
Então, toda vez que você abrir o código-se s, é vai aparecer algo parecido.
Ele vai lhe perguntar o que você quer fazer?
Você quer começar algo aleatório, um parque infantil, basicamente você
pode apenas testar o código sem realmente se comprometer com qualquer app.
>> Você quer criar um novo projeto?
Ou você quer continuar trabalhando no projeto existente?
No nosso caso, vamos para criar um novo projeto.
Por isso é muito bom, s código na verdade já tem
-lhe dado alguns modelos para a criação de objetos.
Se você quer fazer um jogo, o Código na verdade, tem um modelo de jogo para você,
tem aplicações de página com base, aplicação baseada em abas.
Neste caso, vamos para fazer algo muito simples,
e nós estamos indo para usar um aplicação visão única.
>> Depois disso, apenas o que você quiser chamá- seu produto, e qual é o seu nome,
qual é o seu identificador, e o que a linguagem que você usa.
Aqui nós não queremos vá utilizar o Data Core.
Core Data é basicamente um databasing iOS.
Se você fizer o Core Data, s código vai definir
um lote aulas mais complicado para você.
Portanto, para manter tudo simples, estamos só vou fazer sem Core Data
agora mesmo.
>> O problema que vai ser usando é isso-- o problema
vamos estar criando é que nós basicamente deseja importar Mario de C
a um app iOS.
Então, vamos chamar isso de Mario-iOS.
É claro que você especificar o que você quer colocar no seu projeto.
E lá vamos nós.
>> Portanto, este é um pouco esmagadora, mas esta é realmente
o que acabamos de ver nos slides.
E a primeira área, vemos agora é basicamente configuração do projeto.
Então, tudo o que você quer fazer projeto, que tipo de dispositivo,
vamos apenas dizer que tipo de dispositivo quer o seu app para aparecer em?
É iPhone, iPad ou universal?
Assim, a orientação do dispositivo, todas essas coisas.
Não é muito importante, mas poderia ser, mas esta
É um lugar onde você configura seu projeto, se você realmente
deseja implantar a loja da Apple.
>> Tudo bem, vamos olhar para algo que está dentro de nosso código.
Vamos percorrer o navegador de arquivos.
E estes são todos os arquivos que já veio com o modelo, muito agradável.
Então, quando nós clique em um deles isso é o que parece.
Muito semelhante ao g edição.
Mas você pode ver que a destaque de sintaxe é, provavelmente,
um pouco mais agradável.
E é realmente muito mais poderoso do que g edição.
E você pode auto completa um monte de coisas para você,
como veremos muito rapidamente.
>> Vamos abrir a área de depuração também.
Tudo bem, como podemos ver, o console está bem aqui.
Isto é o que você vai ver onde você está em printf ou nsloging algo.
Assim, sem mais delongas, vamos realmente compilar o aplicativo e ver o que acontece.
Uma característica essencial para s código, é que s código
vem com um simulador de iPhone.
Assim você não precisa ter um iPhone para tentar o seu projeto,
s código pode simular que, para você, como podemos ver no momento.
>> É muito bom.
Está demorando um pouco pouco de tempo para compilar
e, basicamente, temos um aplicativo vazio,
que na verdade não faz nada.
Mas ele compila.
É bastante impressionante.
É muito melhor do que C, hein?
Tudo bem, então vamos tentar acrescentar algo.
Um arquivo que é um pouco estranho aqui é chamado de storyboard.
Este é realmente um grande, característica impressionante para s código.
Porque em s código, você pode realmente arrastar e soltar elementos na interface
e ele vai mostrar diretamente para cima.
Vamos tentar isso.
>> Nós deixamos cair um rótulo aqui, "Olá mundo !!!"
Nós podemos centralizar isso.
Muito legal.
Agora vamos executar esta simulação stop.
Aqui nós temos "Olá mundo !!!"
Nós nem sequer fazer qualquer codificação ainda.
O que diabos está acontecendo?
Este é o quão poderoso Interface Builder pode ser.
Alguém chegou a dizer que Provavelmente, você pode apenas
completar um app sem escrever provavelmente mil linhas de código
apenas usando a Interface Builder.
Mas provavelmente não é a melhor maneira de fazê-lo.
>> Agora vamos realmente começar a codificação.
Assim, a estrutura para o ficheiro é realmente muito interessante
porque, como você pode ver, há nenhuma função principal em qualquer lugar.
Veja?
Como mencionamos anteriormente, você pode ver que esta
é um arquivo de implementação para uma classe específica.
Mas não há qualquer lugar principal.
Então, onde é o principal?
Na verdade, há um principal, mas o principal é, na verdade, escondida de vocês.
O principal é aqui.
Isso parece familiar.
>> Então, basicamente o iOS está fazendo dentro principal
é que, sempre que é principal chamado, que é basicamente
sempre que o aplicativo é executado, ele cria um objeto chamado AppDelegate.
Como mencionei antes, a todo app é realmente um objeto por si só.
Portanto, desta forma, basicamente, a iOS app está dizendo o compilador
que OK, eu estou indo para criar um produto chamado AppDelegate,
e que vai ser o meu app.
Então, você precisa ir que através AppDelegate
e ver o que esse cara está fazendo.
Meu trabalho é feito por mim.
>> E em AppDelegate você pode ver que existem algumas funções realmente estranhos,
bem, na verdade, métodos, que Apple já lhe deu.
Quem são esses?
Estes são realmente apenas protocolos que eu estava falando.
Então, esses são os eventos que a Apple deu-lhe para começar.
Não há nada de alguma das funções agora,
mas se queremos inicializar algo para o nosso app
antes de entrar em exibição qualquer ponto de vista, nós fazemos isso aqui.
>> Você pode apenas ler o nome e eu acho que o evento é realmente muito clara.
Então, agora principal criou um objeto para AppDelegate.
E o que AppDelegate vai fazer é, na verdade, também escondido de você.
O AppDelegate vai começar o carregamento do estoque ViewController.
Então, é basicamente vai começar o carregamento de todos os pontos de vista que você tem
e apenas processar a visão com base na hierarquia.
>> Portanto, neste caso, só temos um ponto de vista, o que está aqui.
Então, essa é a única vista que vai ser chamado.
A lógica ViewController está bem aqui.
Este é o código que realmente controla o ponto de vista que acabamos de ver.
Tudo bem, vamos fazer alguma coisa aqui.
Então viewDidLoad soa como um evento, quando na verdade este é também um delegado,
este é também um protocolo.
>> Assim, seja qual for o ponto de vista é carregado, tudo dentro da função
será chamado.
Neste caso, devemos ver "Olá Tianyu! "Se executar o programa.
Está ficando um pouco lento a compilação dos arquivos de storyboard.
Bem, na verdade, nós vemos uma saída para ele.
É muito legal.
Agora vamos realmente fazer Mario.
Eu estou indo para definir o funcionar muito rapidamente.
marioWithLevels: Resultados (int) nível.
>> Tudo bem, este é realmente o impressionante recurso de s código de auto realização.
Então, quando você escreve para e digite entrar, ele já desistiu do modelo
para você, o que é muito legal.
Isso deve olhar realmente familiar para vocês.
Desculpe, isso é culpa minha.
Tudo bem, legal.
Essa lógica deve olhar muito familiar para vocês, especialmente apenas Mario.
>> Mas agora vamos imprimir a o console a cada momento,
porque queremos manter de alguma forma a par do que estamos imprimindo.
Nós vamos usar o resulta de alguma forma, mais tarde,
para exibir a impressão a resultar para o usuário.
Então, ao invés, nós somos apenas nslogging tudo,
que nós estamos armazenando tudo em um resultado chamada de função,
mas a lógica é exactamente o mesmo.
Depois que terminar, nós basta imprimir os nossos resultados.
>> E aqui em vez de imprimir o meu nome, vamos chamar uma função.
Vamos ver o que acontece.
Oops, obviamente.
Nós temos um bom pouco pirâmide aqui fora.
Este é basicamente C, nós somos apenas manipulação de onde você chamar uma função
e como é que uma função parecida.
Não há nada de diferente.
Mas esta é realmente não muito emocionante aqui,
porque nós não estamos vendo nada do aplicativo para iPhone.
>> Então, se você realmente tem um iPhone app-- se você realmente tem direito Mario iOS
Agora, você não vai para ver tudo o que
tem alguma coisa a ver com Mario porque todas aquelas saídas em um console
estão escondidos de um usuário.
Isto é o que você vê, que é "Olá mundo !!!"
Não é bom.
Agora vamos tentar fazer com que o usuário veja o que exatamente estamos imprimindo.
Então, nós não precisamos de rotular mais.
Vamos tentar descobrir alguma coisa outra coisa que possa ser útil.
>> Na verdade, existe uma elemento que é chamado
campo de texto, o que poderia ser muito útil para nós.
Basicamente, exibe uma região de texto que pode ser editado.
Assim que parece realmente útil.
Agora vamos arrastá-lo e soltá-lo.
Uau, temos uma visão de texto a nosso ver, muito chique.
Isso é um pouco grande demais.
Vamos torná-lo menor.
Colocá-lo para o centro.
Torná-lo menor também.
>> Agora, temos uma vista de texto, o que poderíamos ser utilizado para exibir o nosso resultado final.
Mas agora é definitivamente não vai funcionar
porque não é o Não-- ViewController acabamos
definido não sabe que há uma exibição de texto lá fora.
Então, precisamos de alguma forma ligar a exibição de texto que acabamos
criado com a classe que já veio com a gente.
>> A nossa forma de fazer isso é na verdade, realmente mágico.
Então abra storyboard.
Há um especial [inaudível] chamado [? assistente?] [inaudível].
Quando você clicar em que, é vai abrir dois arquivos.
Um deles é uma classe e outra é uma vista que corresponde para isso.
É muito, muito útil.
E vamos apenas atravessa o arquivo .h.
Controle, este é [inaudível] a lógica.
Pressione a tecla Control e arraste o exibição de texto para a declaração.
Vamos chamar esse outputView.
Conecte-se.
Então, aqui temos declarado um novo propriedade para a nossa classe ViewController.
E a nova propriedade é apenas o ponto de vista de texto
nós criamos no edifício interface.
Então, dessa forma poderíamos o acesso de todos os dados
e manipular tudo o que está dentro o ponto de vista de produção, que é incrível.
>> Assim, em nosso código atual, vamos fazer alguma coisa com ele.
Então, neste momento em que nós somos como impressão o resultado final para Mario,
estamos em não registrando nada.
Quero dizer que poderia manter a declaração de registro.
Além disso, nós enviar a leitura que acabamos
criado para a exibição de saída, que é uma UI textview que acabamos de criar.
Agora vamos ver o que acontece.
Uau.
Temos uma pirâmide no app agora.
>> Assim, o usuário pode ver a nossa saída, pois copiamos a saída do nosso código
para a nossa interface.
É muito bom.
Na verdade não é que excitante porque nós can--
Todo o app está fazendo é mostrando uma pirâmide para você,
e não há nada que você possa fazer sobre isso.
Não é particularmente emocionante.
Então agora vamos fazer um botão que irá limpar os pontos de vista.
Parece que um botão será útil.
Arraste e solte.
Um botão.
Botão dois.
>> Então, quando eu clicar à esquerda botão, a vista deve limpar.
Não deve haver nada na tela.
E quando nós clique no botão direito, Mario,
a vista vai aparecer novamente.
Assim, desta forma nós também fazemos o material mágico, controle e arraste
à declaração de classe no assistente director--
no assistente de espectador.
Neste caso, estamos especificando que esta deve ser uma ação.
clearMario.
>> Então, aqui já criamos uma ação chamada clearMario,
que é o método que seria chamada sempre que pressionar o botão claro.
Assim, em nosso código, na verdade, vamos apenas colocar o texto de saída ea vista de saída
em nada, e de que maneira ela vai aparecer para ser claro.
Além disso, vamos criar outro método chamado runMario.
Oh, desculpe, isso não deve ser uma propriedade.
Tudo bem, que deveria ser uma ação bem.
>> E quando essa função é chamado, nós apenas executar Mario dez.
Esperemos que isso vai ficar bem.
Será que compilar?
Sim.
Agora temos uma visão.
Nós temos uma saída.
E vamos ver o que acontece.
Isso acabou.
Ele está de volta novamente.
Portanto, temos aqui especificado que tipo de função
irá ser chamado quando nós digitar alguma coisa,
quando se pressiona um botão específico.
Este é basicamente o programa de acção alvo
para evento dirigido programação em Objective C.
>> Além de que, não é muito emocionante
porque não podemos realmente mudar quão alto da pirâmide será,
por isso, provavelmente vai querer de alguma forma obter uma entrada do usuário
e alterar a altura do pirâmide com base no que eles saída.
Então nós vamos fazer isso.
Então, desta vez quando chamamos runMario, nós não apenas chamar Mario diretamente.
O título deste um.
>> Delegado.
Isto é muito interessante.
O que é um delegado?
Eu vou colocar auto aqui.
E vamos ver o que isso significa mais tarde.
Então aqui nós criamos basicamente um instância específica chamada de alerta UI
view.
A exibição de alerta é UI basicamente o que quiser
vê cada vez que algo pops -se e pede-lhe para a entrada,
como o que vai acontecer quando você está tentando para comprar algo em uma loja de aplicativos.
>> Além de que, depois de criá-lo, nós apenas mostrar o alerta.
Tudo bem, vamos apenas rapidamente teste isso vai funcionar ou não.
Isso é muito legal.
Agora vamos realmente criar uma campo de entrada para o alerta de UI.
Esta é a forma como fazemos isso.
E devemos ter um vista de entrada para o alerta.
Muito legal.
Vamos apenas dizer que 10.
>> Ele não está fazendo nada direito agora, porque a chamada, na verdade,
não se alterou para a execução de mario.
Portanto, este tornou-se um pouco pouco estranho porque sempre
nós pressionar um botão para baixo, sempre que pressionar um botão na exibição de alerta,
algo acontecer, mas isso não acontece.
Como é que vamos pegar isso?
Como sabemos que um usuário rejeitou uma exibição de alerta
e já entrou em um número, porque agora nada está realmente acontecendo.
>> Bem, você deve ter adivinhado -lo direito, a delegação.
Assim, além de tudo estas declarações,
precisamos adicionar uma nova delegação de que chamou de UI vista alerta delegado.
Assim que cada interacção ou evento
que nós vamos ter com a exibição de alerta UI
vai ser tratada por nossa classe também.
>> Assim, além de que, será botão de visualização clique alerta no índice.
Isto é alcançado.
Assim, nesse caso, temos já-- por isso temos
descobri um protocolo que vai lidar com o evento quando
clicamos no botão Concluído na exibição de alerta.
Então, cada vez que demitir o exibição de alerta, isso deve acontecer.
Deixe-me apenas testá-lo muito rapidamente.
Bem, na verdade, chegámos aqui.
>> Então, aqui, o que não vai na verdade é, na verdade,
obter as-- Por isso, queremos sair o texto que temos anteriormente
entrou na exibição de alerta.
E com base em texto, estamos vai exibir Mário.
Isso transforma muito rapidamente para fora se ele realmente funciona ou não.
Então, nesse caso, se a entrada, vamos dizer, 10, devemos ver 10.
>> Muito bom, nós temos um número aqui.
É muito bom.
Agora, a última etapa será ser-- Assim, o último passo que precisamos fazer agora
é apenas uma chamada com Mario com base no nível de entrada
que temos colocado em exibição de alerta.
Então, precisamos converter essa string para iOS.
Transbordamento estático é muito impressionante.
E, depois, é só chamar auto valor marioWithLevels.
Vamos ver o que vai realmente funciona ou não.
>> Nós já estamos dada uma pirâmide.
Vamos tentar mudar a altura.
Isso realmente funciona.
É muito legal.
De modo que agora você pode apenas entrada de qualquer valor que você quer.
Vamos apenas dizer que quatro.
Isso é muito legal.
Portanto, este é basicamente um exemplo muito rápido
Para saber como criar um projeto em código s e como fio realmente rapidamente
alguns eventos realmente simples e funções.
>> Assim, a fonte está indo para ser colocado on-line mais tarde.
Então, se você estiver interessado em Mario funciona como IOS,
Eu vou colocar exatamente o mesmo projetos para o site do CS50 mais tarde.
Nós somos feitos, basicamente, com a verão, e antes de terminarmos
Eu só quero que você aponte para caras alguns recursos realmente impressionantes de que
estão disponíveis online.
>> Obviamente, a documentação da Apple vai ser muito útil.
Mas, para além disso, I especialmente Recomendamos quatro fontes, escola de código,
casa na árvore, e AppCoda WWDC vídeos.
Código escola e casa da árvore são dois sites Educadoras on-line,
que especificamente se concentrar em engenharia de software.
Especialmente para a escola código, eles tem realmente bom tutorial on iOS.
>> Esse é um exemplo muito rápido para ele.
Eles, na verdade, criar um realmente cute-- olhar para aquele pequeno iPhone bonito
gajo lá, é bastante impressionante.
E a maneira como eles explicam Objetivo Sintaxe C é perfeitamente claro.
Casa na árvore é a mesma.
E AppCoda é um fórum.
Na verdade, é um blog que foi executado por um muito experiente Objective C
programador.
E todos esses tutoriais em AppCoda são muito curto e fácil de implementar,
altamente recomendado.
>> E se você é um desenvolvedor, definitivamente ir verificar
como os vídeos da WWDC, onde você pode aprender sobre a última programação iOS
técnicas, APIs e bibliotecas.
Então, isso é muito bonito -lo para o seminário.
Muito obrigado.
E eu espero que você se divertir criar o seu próprio app iOS.