TIANYU LIU: Hey, comment est ça va tout le monde? Et ce est l'App iOS programmation du séminaire de c objectif. Et mon nom est Liu Tianyu. Je suis un junior Lowell en ce moment, concentrant en informatique. Donc, dans ce séminaire, je suis vais vous enseigner les gars un peu sur la façon de faire une application. Yay, se enthousiasmer pour elle. Donc, avant même de commencer la plongée dans le côté de programmation proprement dit, disons simplement très rapidement parler pourquoi devriez-vous construire une application iOS? Pourquoi iOS si impressionnant? Ainsi, le premier problème, la première chose qui est assez impressionnant pour nous, surtout comme CS50 étudiant, ce est que iOS utilise Objective C. Eh bien, il ya un nouveau langage appelé Swift, mais nous ne allons pas utiliser que dans ce séminaire. Si vous êtes intéressé à Swift, il est un séminaire indépendante à ce sujet. Mais Objective C est fondamentalement un sur-ensemble de C. Signification que tout ce que vous pouvez utilisez dans C être traduit en Objective C très facilement. Comme vous pouvez le voir plus tard, qu'en effet, il ya une syntaxe très basique, sont essentiellement exactement la même, C et Objective C. Donc, puisque vous avez pris CS50 jusqu'à ce jour, vous avez déjà savoir Objective C, au moins 40%. En outre, Apple a vraiment API robuste pour iOS. Il ya beaucoup de vraiment fou choses que vous pouvez faire avec elle. Dont l'un est quelqu'un effectivement créé une application iOS pour les voitures de contrôle, qui est assez intéressant. Probablement un hélicoptère est plus excitant. Mais ce est la puissance l'API iOS peut être. Et comme vous pourriez avoir compris en ce moment, le débordement de pile est probablement l'un des plus importantes ressources en ligne disponibles pour vous. Et de bonnes nouvelles, pour chaque seul problème vous pouvez éventuellement penser à tout en construisant votre projet final en Objective C, il est probable une réponse de débordement de pile. Ce est tout simplement génial. En plus de cela, iOS est vraiment une plate-forme où vous pourrez rejoindre un grand public avec peu d'effort. Ce est pas comme Android, où tout est très fragmenté. Tout iOS est unifié. Et tant que vous créez une application pour iPhone, vous pouvez très facilement port à l'iPad, iPad mini ou différentes tailles iPhone. Ce sont tous vraiment pratique. Et ce est juste vraiment bon pour impressionner vos amis. Vous pouvez simplement tenir un iPhone et dire à votre ami Hey, ce est l'application que je fais. Vous pouvez le faire pour ne importe quel applications de bureau, qui est agréable. Très bien, maintenant nous allons réellement obtenir dans la langue C. Objectif Alors pourquoi ne pas commencer avec une syntaxe très basique. Comme je l'ai mentionné avant Objectif C Ce est fondamentalement un sur-ensemble de C. Donc, beaucoup de syntaxe de base sont en fait exactement la même chose. Déclarer une variable et l'ajout de deux variables ensemble est exactement comme nous l'avons fait dans Mario. Rien de nouveau ici. De même, le locataire pour la boucle et la condition est également le même. Vous pouvez faire une boucle for comme vous ont fait dans un Mario [inaudible]. Et vous pouvez faire conditions tout comme ce que vous ont été faites dans votre p ensembles précédents. Cependant, Objective C C est pas complètement, et il est quelque chose qui est un peu bizarre à ce sujet. La première étant que lorsque vous êtes C faire la programmation, vous appelez généralement inclure, puis un nom de bibliothèque. Mais en Objective C vous appelez cette importation. Dire essentiellement la fonctionnalité, juste des noms différents. Et les cordes sont en fait un peu bizarre. Vous pouvez voir que le premier chose qui est un peu bizarre ce est que vous avez une assez weird-- sorry-- vous avez un NS assez bizarre signer ici. Et la deuxième chose ce est un peu bizarre est que vous avez une arobase avant déclarant effectivement la chaîne. Alors le signe signifie essentiellement une chaîne qui ne est pas seulement une chaîne de caractères, il est en fait un objet. Nous allons expliquer plus tard il ne faut pas panique si vous ne avez pas comprendre ce que cela signifie. Et l'impression à la console est un peu différente parce que dans C nous appelons printf, mais en Objective C nous appelons [inaudible]. Vous demandez peut-être ce est que. Ce est essentiellement printf, juste une langue différente. Exactement le même usage, exactement les mêmes fonctionnalités. Eh bien il se avère que Objectif C fait a ns un préfixe dans presque tout, tous les types de données de base, NSString, NSArray, NSDictionary. La raison étant que ns représente réellement pour l'étape suivante, qui est une entreprise qui Steve Jobs a fondé, qui est une société où le langage Objective C est né. Donc, ce est essentiellement la tradition. Je sais que ce est un peu bizarre, mais ce est Apple. Donc, quelque chose qui est encore plus étrange que ce est une déclaration de fonction. Ce est très différent de ce que nous voir dans C, car ici il fait ne ressemble pas plus C. Ce que vous avez ici-- par le ainsi ce ne est pas une puce, ce est un signe moins. Vous avez un signe moins parenthèses vide, puis le nom de la fonction. Disons que si nous avoir Bonjour tout le monde, puis le type de retour serait nulle parce que nous revenons rien. Ce qui obtient vraiment bizarre ce est que lorsque vous êtes ayant plus d'un paramètre passant dans une même fonction que sera vraiment bizarre comme montré ici. Nous avons un nom de méthode, addInt appelé à [inaudible] et nous passons un paramètre. Mais après cela, nous avons plus nom de la méthode appel avec. Et après avec nous passons le second paramètre. Ce est en fait un peu bizarre, mais toutes ces fonctions déclarations suivre le même schéma que cela. Nous avons un signe moins pour commencer. Le signe moins pourrait être un signe plus parfois en fonction de ce genre de méthode est-il. La méthode est essentiellement un autre nom pour la fonction. Et nous allons expliquer que plus tard, lorsque nous parlons objet la programmation orientée. Vous devez d'abord spécifier le retour tapez parenthèses à l'intérieur, après quoi vient le nom de la méthode. Vous êtes de passage un paramètre. Et si vous avez plusieurs paramètres vous devez étendre le nom de la méthode et fondamentalement écrire quelque chose de plus ici. Il pourrait être quelque chose que vous voulez. Dans notre cas, ce est avec. Mais vous pourriez dire fin, ou ou ou abc bar complet, ce que vous voulez. Et puis après que vous êtes passant paramètre b. Ce est un vraiment bizarre convention, mais nous sommes va voir pourquoi Apple a voulu de le faire très rapidement. Alors, comment vous appelez la fonction? Appel d'une fonction dans l'objectif C est également différent de C. En fait, l'appel d'une fonction en Objective C est plus comme vous parlez à quelqu'un. Ici, nous avons auto, qui est appelé un objet. Vous êtes essentiellement dire la opposer auto-à-dire "Bonjour tout le monde!" Ce est comment appeler la fonction. Un objet et un nom de méthode combinée avec l'autre. Et ce est là que l'extension bizarre pour le nom de la méthode vient vraiment en jeu. Regardons le deuxième exemple. Nous venons de définir une méthode appelée addInt avec bla bla bla. Donc dans ce cas lorsque vous appelez que [spécifique? message?] ça va pour ressembler auto addInt: 10 avec: 2. Cela ressemble à l'anglais. Bien que la fonction déclaration de fonction est bizarre, le point de l'objectif de C modèle de déclaration de méthode, ce est que lorsque vous appelez la fonction ou méthode il sera sembler réelle anglais. Il est donc très intuitive une fois que vous obtenez en elle. Surtout dans ce cas, où vous pouvez essentiellement voir que le nom de la fonction est sorte de se documenter. Vous ne avez pas besoin plus d'explications pour voir ce qui se passe exactement, ce exactement un paramètre faisant. Au-delà de cela, nous allons parler un peu peu de programmation orientée objet. La programmation orientée objet est une programmation du fondamental ou des motifs techniques qui est utilisé par Objective C. Objective C est appelée Objective C, pas C, pour une très bonne raison. Donc, avant d'entrer dans Syntaxe Objective C, Disons vraiment regardez rapidement ce qui est exactement un objet. Nous avons probablement fait quelque chose comme objet avant, qui est appelé le struct lorsque vous êtes la mise en œuvre d'un arbre ou une liste chaînée ou [? essayer. ?] Donc, ce est fondamentalement comme une structure, mais il est beaucoup plus puissant que cela. Un objet a des méthodes et propriétés. Les méthodes sont essentiellement des fonctions. Fondamentalement fonctions qu'un spécifique à un certain objet. Et les propriétés sont essentiellement les champ vous indiquez dans la structure. Donc, pour chaque objet nous avons une propriété qui a des variables qui sont spécifiques à l'objet. Et nous avons quelques fonctions sont également spécifiques à l'objet. Et les fonctions sont appelées méthodes et les variables sont appelés propriétés. Ce est juste un nom de fantaisie. Pendant que vous fait, chaque vue unique vous voyez lorsque vous ouvrez une application iOS, disons simplement que Twitter ou Facebook, chaque vue unique que vous voyez est un objet. Et même l'ensemble de l'application est un objet pour commencer. Concept très intéressant. Et pourquoi voulons-nous l'objet programmation orientée? Alors vous pouvez imaginer que lorsque vous programme, il devient assez compliqué. Disons simplement que lorsque vous êtes la mise en œuvre échiquier, la logique va être vraiment compliqué. Vous avez 36 différents morceaux, de sorte que si vous vouloir écrire la logique pour tous 36 pièces différentes du jeu d'échecs, que ça va être beaucoup de différentes fonctions et variables. Ce est un tas d'ennuis. Et probablement que vous allez écrire un méthode différente ou une fonction différente pour chacun de la pièce à exactement contrôler ce qu'ils font. Mais si vous faites orientée objet la programmation, l'ensemble de ces pièces peut être prélevée dans un seul objet. Et l'objet aura une certaine commune propriétés, comme ce type de pièce est-il? Quelle est sa couleur? Comment peut-il se déplacer? Et de cette façon vous avez grandement simplifier la logique de celui-ci. Donc, ce est juste une très bonne façon de rendre les programmes complexes, et la relation hiérarchique dans le programme, très simple. Comme nous allons voir pourquoi très rapidement lorsque nous sommes en train de faire programming-- quand nous sommes effectivement faire un code S programmation session ultérieure. Bien que, en plus de, programmation orientée objet est juste beaucoup de plaisir. Vous devez concevoir votre propre objet. Vous devez concevoir ce qui ne ressembler par vous-même. Il n'y a pas de bonne réponse à cela. Et ce est totalement intéressant. Donc, dans la programmation orientée objet, deux concepts fondamentaux sera la classe et l'instance. Une classe est fondamentalement un modèle pour objet. Et une instance est fondamentalement un objet spécifique. Disons simplement que vous faites un cookie. Dans ce cas, chaque seule biscuits vous fait retrouver avec va être un objet. Mais la plaque à biscuits que vous utilisez pour cuire tous les cookies seront une classe. Une classe est fondamentalement un modèle. Et l'instance sera l'un spécifique objet créé à partir de cette classe. Et une instance sera créé sur la base de déclaration de classe, comme nous le verrons plus tard dans les diapositives. Donc, nous allons effectivement faire un très exemple rapide [inaudible]. Disons que nous déclarant un objet pour un chat. L'objet doit have-- la classe de chat devrait ont certaines propriétés et méthodes. Quel genre de propriétés devraient les have-- classe devrait avoir le chat? Par exemple, la couleur, âge et la race, ceux seront variables sont spécifiques à chaque chat. Et ce sont des choses que nous utilisons pour décrire un chat. Quel genre de méthode, ou ce que peut faire un chat? Quelques exemples rapides seraient chasse souris, manger du poisson ou tout simplement meow. Ce est un vraiment rapide exemple de classe de chat. Et un très spécifique objet de chat sera un chat où nous spécifions le la couleur, l'âge et la race. Dans ce cas, notre objet est ne est plus une classe plus. Nous copions le modèle de la classe et nous spécifions chacun des informations spécifiques à cet objet spécifique de le rendre indépendant. Et quand vous appelez une méthode dans un objet, vous appelez meow sur l'objet, qui est le chat que vous venez de créer. Probablement vous imprimer quelque chose comme "Bonjour tout le monde! Miaou. " Assez mignon. Très bien, disons simplement entrer dans certains détails et voir ce qui est exactement ce que traduire en étant programmation iOS. Donc, dans la programmation de tous les iOS unique classe sera mis en œuvre dans deux fichiers. Un fichier est là, qui est appelée l'interface. Un autre fichier est là, qui est appelé mise en œuvre. Typiquement, l'interface aura extension.h comme nous l'avons vu dans les bibliothèques C. Et le fichier de mise en œuvre est allez avoir extension.n. Ce est un peu bizarre. Mais .n .c signifie en fait, il n'y a pas différence fondamentale entre ceux deux. Donc dans ce cas, nous pouvons voir que nous sommes déclarant interface, Cat: objet. Cela se appelle l'héritage. Nous essentiellement hériter de la classe de chat de la classe d'objet. Donc, chaque propriété et un procédé qui était précédemment définie dans la classe de l'objet seront définis automatiquement dans une classe de chat ainsi. En plus de cela, nous définissons la couleur, race et l'âge, trois variables. Cela semble réellement comme quelque chose que vous avez fait avant. Il ressemble struct. Ce est essentiellement la syntaxe pour la déclaration de struct, et ce est tout à fait exact. Et comme je l'ai mentionné avant, la différence d'une struct et un objet, l'un des différences fondamentales est qu'un objet a procédé, tandis qu'une structure ne dispose que des variables. Donc, en plus des propriétés ou les variables que nous avons créés pour l'objet, nous spécifions une méthode. Disons que nous avons ici deux méthodes, on est meow, un autre est la souris chasse. Nous voulons probablement être passer un paramètre basé sur notre méthode précédente modèle de déclaration. Vous voulez probablement être passer une souris. Et vous aurez probablement envie pour renvoyer une signifiante bool si votre chat a réussi pris la souris ou non. Ce est l'interface, mais nous pouvons voir que l'interface fait ne rien faire. Il dit juste un programme ce exists-- ce qui existe dans la classe de chat. Donc, pour le programme de faire quelque chose, nous avons besoin d'avoir des fichiers de mise en œuvre. Donc ici, la première chose que nous faisons est évidemment, nous importons de l'interface. Après nous importons l'interface, nous définissons la méthode. Disons simplement ici meow serait tout simplement imprimer "Bonjour Le Monde!" à la console. Et après la mise en œuvre fichier, nous sommes assez bien fait. Ce est fondamentalement une classe déclaration pour une classe. Alors maintenant, la question devient, comment voulez-vous déclarez une variable? La façon dont vous utilisez une classe pour créer un objet en Objective C est écrit ici. Vous spécifiez d'abord que ce est un pointeur de chat, parce que chaque objet en Objective C est finalement mis en œuvre comme un pointeur. Et vous appelez la classe, appelez-les que alloc, qui est essentiellement malloc, dire le système d'exploitation que vous besoin d'espace de mémoire pour cet objet. Après que vous avez un objet déjà, et vous venez de l'initialiser. Ce est juste convention. Je sais que ce est est un peu bizarre, mais ce est en fait la manière dont Apple fait des trucs. Affectation des propriétés est en fait assez simple. Ce est très similaire à ce que vous faites quand vous affectez certains spécifiques champ à l'intérieur de la structure. Vous avez juste la variable nom, le nom de la propriété, et attribuer une valeur qui lui est propre. Et d'appeler une méthode est très similaire. L'appel d'une méthode est essentiellement ce que je parle pour appeler ne importe quelle méthode en Objective C. Vous êtes de passage un objet, ce cas, il va être MyCat, et vous êtes de passage le nom de méthode. Comme si vous parlez à l'objet, MyCat, que vous devriez meow. Ce est assez intéressant. Après cela, il n'y a une modèle de conception plus essentiel que nous devons parler avant d'arriver à code S réelle. Ce modèle de conception est appelé Si la programmation entraînée. Ce est aussi probablement l'un des plus idées fondamentales dans la programmation iOS. Donc, vous ne savez probablement pas ce qu'est exactement est la programmation d'un événement donné, mais il ne est pas vraiment effrayant. Eh bien en fait, vous avez déjà fait ça avant. Ce est l'une des lignes Vous avez probablement déjà écrit dans le dernier [inaudible] du CS50, google.maps.event.addListener (marqueur, "Clic", function () {}) :. En appelant cette ligne, vous êtes essentiellement dire l'ordinateur que chaque fois que l'événement appelé "Clic" qui se passe sur le marqueur, utiliser cette fonction. Ceci est très différent de ce que vous faites dans mario.c. Dans mario.c il suffit de lancer le programme fois, il vous donne une sortie, et vous avez terminé. Ce sont un peu comme une programmes de tir. programmes de Event driven sont très, très différent. Imaginons, si Facebook est un programme de tir ce ne est pas vraiment bon. Vous allez juste pour Facebook une fois et ce est fait. Il vous donne une sortie et vous ne l'avez récupéré. Vous ne avez jamais eu rien de plus. Donc ici, surtout le modèle que nous utilisons est événement entraînée, de sorte que Chaque fonction être pris sur la base de ce événement qui se est passé. Par exemple, si nous avons un bouton et nous spécifions que chaque fois que ce bouton est cliqué, appeler la fonction appelée "Bonjour tout le monde!" De cette façon, nous pouvons vraiment gérer la logique de fonctionnement se écouler de manière très flexible. L'utilisateur peut faire ou appeler une fonction qui a déjà été appelée. Il est entièrement basé sur ce que les utilisateurs font. Ainsi nous pouvons voir que ce est fait beaucoup mieux que mario.c. Et de bonnes nouvelles, ce est que ce est effectivement pas un concept nouveau. Les gars, vous avez déjà fait que, dans le dernier problème réglé. Donc en Objective C il ya trois schémas différents pour programmation événementielle. Le premier diagramme est appelé l'action cible, où vous liez un bouton presse avec une certaine fonction. Disons simplement que, lorsque vous cliquez sur certains bouton, vous appelez une fonction. Ce est l'action cible très simple. La seconde est une en fait le plus difficile, ça se appelle la délégation sur le protocole. Nous allons expliquer que, dans beaucoup de détails plus tard. Et la troisième voie est notification. Ce est en fait pas très important dans la mesure où qui nous concerne, parce que la chance que vous allez utiliser la notification dans votre projet final est assez faible. Donc, nous allons sauter cette partie. Et nous allons plonger en délégation sur le protocole. En quoi consiste exactement un protocole? Ou qu'est-ce qu'une délégation? Parlons de protocole pour commencer. Protocoles ne sont rien mais les événements. Mais ces événements sont donnés à vous par Apple pour commencer. Par exemple, je ne suis pas complètement sûr combien d'entre vous les gars utilisent d'Apple d'origine app email ou un contact, mais chaque fois que vous faites défiler la table et appuyez sur la cellule spécifique sur la table, ce est un événement. Et si vous voulez faire cet événement par vous-même, ce est en fait un peu difficile. Donc Apple a donné que même de vous de sorte que vous pouvez simplement utiliser directement l'événement pour faire quelque chose sur votre propre. Les protocoles sont effectivement vraiment, vraiment largement utilisé en Objective C. Eh bien dans fait, chaque application unique a quelque chose pris app délégué. A l'intérieur du délicate est la totalité de la protocoles pour le chargement de l'application. Disons simplement il est un événement pour l'application a la charge. Donc, ce qui devrait arriver après que vous avez créé une application, une fois que vous ouvrez l'application, lorsque vous fermez l'application, ou après vous mettez l'iPhone pour dormir. Ce sont tous des événements qui ont déjà été donnée à vous. Et à l'origine à l'intérieur de ces particules il n'y aura pas mise en oeuvre. Apple vient de vous a dit que cette fonction va se passer quand un événement se produit, mais ce que vous faites avec ce fonction est complètement à vous. La délégation est essentiellement dire la classe que vous devez gérer ces protocoles. Ce est un peu confus, mais il sera beaucoup plus clair quand nous faisons les codes de s en action. Délégation sur le protocole est en fait un mécanisme très robuste en ce sens que si nous faisons délégation à une classe spécifique, nous pouvons gérer l'essentiel toutes sortes d'événements en utilisant ne importe quelle classe que nous avons, outil très pratique. Donc, un exemple rapide pour délégation sur le protocole sera ce que je viens de parler. Ce protocole est appelé spécifiquement tableview [inaudible] sélectionner rôle au [? index?] [? passé. ?] Donc ce une événement qui serait pris lorsque vous fait taper sur un spécifique cellule dans votre tableview, disons simplement dans votre courrier ou dans votre application Contacts. A l'intérieur d'une fonction y avait faire à l'origine rien. La fonction ne est pas faire quelque chose par défaut. Mais vous pouvez spécifier ce que fait la fonction, compte tenu de ce que vous voulez de votre application. Outil très pratique. Et avec tout ce que étant dit, je ai pratiquement couvrir une syntaxe très basique et concept fondamental pour Objective C programmation, et nous pouvons faire un peu de code s. Beaucoup plus excitant. Donc code s est en fait un peu écrasante lorsque vous l'ouvrez pour la première fois. Une note rapide, donc si vous vouloir faire du développement iOS, Je recommande fortement vous avez un Mac. Parce que faire du développement sur iOS Windows est vraiment, vraiment dur. Ce est faisable, mais ce est vraiment difficile. Et vous faites certainement ne pas vouloir utiliser g modifier. Donc, dans le code de s nous avons plusieurs domaines différents. Le code Lorsque vous ouvrez pour la première place vous verrez une zone de navigation, qui montre fondamentalement, vous tous les fichiers qui est dans votre projet actuel. Vous avez une zone de barre d'outils, qui est essentiellement la gestion des points de vue, ou quelque peu rapide outils sur le code de lui-même. Et ce est la zone de l'éditeur réelle. Cette zone est très similaire g modifier, mais beaucoup mieux que g modifier. Et dans ce domaine droite, est appelé la zone d'utilité. La zone devient vraiment pratique lorsque vous créez interface ou spécifier certaines configurations rapides pour votre application. Et le dernier domaine est le débogage. Cette zone contient la console. Donc, lorsque vous dites printf, ou NSLog dans notre cas, tous vos résultats sont va être imprimé ici. Bien? Je suppose que nous pouvons vraiment faire rapidement un exemple pour la programmation iOS. Et ouvrons effectivement en place de code. Ainsi, chaque fois que vous ouvrez de code, ce est va montrer quelque chose comme ça. Il va vous demander qu'est-ce que vous voulez faire? Voulez-vous commencer quelque chose aléatoire, une aire de jeux, fondamentalement, vous peut simplement tester le code sans fait de se engager à ne importe quelle application. Voulez-vous créer un nouveau projet? Ou voulez-vous continuer travaillant sur le projet existant? Dans notre cas, nous allons pour créer un nouveau projet. Donc, ce est vraiment agréable, s code a déjà fait vous donné quelques modèles pour créer des objets. Si vous voulez faire un jeu, S Code a fait un modèle de jeu pour vous, a page en fonction des applications, application de tabulation. Dans ce cas, nous allons de faire quelque chose de très simple, et nous allons utiliser un seule application de la vue. Après cela, tout ce que vous voulez appeler votre produit, et ce est votre nom, quel est votre identifiant et quelle langue utilisez-vous. Ici, nous ne voulons pas vérifier à l'aide de données de base. Core Data est fondamentalement un databasing iOS. Si vous faites Core Data, s Code va définir un lot classes plus compliquées pour vous. Donc, pour garder tout simple, nous sommes juste faire sans Core Data maintenant. Le problème que nous allons être l'aide est le problème that-- nous allons être la création est que nous veulent essentiellement à importer Mario de C à une application iOS. Donc disons que Mario iOS. Bien sûr, vous indiquez ce que vous vouloir mettre dans votre projet. Et là nous allons. Donc, ce est un peu écrasante, mais ce est en fait ce que nous venons de voir sur les diapositives. Et la première zone, nous voyons en ce moment est fondamentalement la configuration du projet. Donc, tout ce que vous voulez faire projet, ce type de dispositif, disons simplement que ce genre de dispositif Veux-tu votre application à apparaître sur? Est-ce l'iPhone, iPad ou universel? Donc orientation de l'appareil, tous ces trucs. Pas très important, mais pourrait être, mais cette est un endroit où vous configurez votre projet si vous avez réellement vouloir déployer sur l'Apple Store. Très bien, regardons quelque chose qui est dans notre code. Passons en revue le fichier navigateur. Et ce sont tous les fichiers qui ont déjà est venu avec le modèle, très agréable. Alors, quand nous cliquons l'un d'eux ce est à quoi il ressemble. Très semblable à g modifier. Mais vous pouvez voir que le la coloration syntaxique est probablement un peu plus agréable. Et ce est en réalité beaucoup plus puissant que g édition. Et vous pouvez compléter automatique beaucoup de choses pour vous, comme nous le verrons très rapidement. Ouvrons la zone de mise au point ainsi. Très bien, comme nous pouvons le voir, la console est ici. Ce est ce que vous allez voir où vous êtes dans printf ou nsloging quelque chose. Alors sans plus tarder, nous allons effectivement compiler l'application et voir ce qui arrive. Une caractéristique essentielle pour code s, est que le code de s est livré avec un simulateur d'iPhone. Donc, vous ne avez pas besoin d'avoir un iPhone pour tenter votre projet, code de s peut simuler que, pour vous, comme nous pouvons voir en ce moment. Ce est assez agréable. Ce est en prenant un peu de peu de temps pour compiler et fondamentalement, nous avons une application vide, qui ne fait rien. Mais il compile. Ce est assez impressionnant. Ce est beaucoup mieux que C, hein? Très bien, alors nous allons essayer d'ajouter quelque chose. Un fichier qui est un peu bizarre ici est appelé storyboard. Ce est en fait un grand, dispositif impressionnant pour le code de s. Parce que dans le code de s, vous pouvez réellement glisser et déposer des éléments sur l'interface et il affichera directement en place. Essayons. Nous laissons tomber une étiquette ici, "Bonjour tout le monde !!!" Nous pouvons centre qui. Pretty cool. Maintenant, nous allons exécuter cette simulation d'arrêt. Ici, nous avons "Bonjour tout le monde !!!" Nous ne avons même pas fait encore de codage. Que diable se passe? Ce est la puissance Interface Builder peut être. Quelqu'un a même dit que vous pouvez probablement juste compléter une application sans écriture probablement un millier de lignes de code en utilisant simplement l'Interface Builder. Mais ce ne est probablement pas la meilleure façon de le faire. Maintenant, nous allons effectivement passer aux choses de codage. Donc, la structure du fichier est en fait vraiment intéressant parce que, comme vous pouvez le voir, il ne est pas la fonction principale ne importe où. Voir? Comme nous l'avons mentionné auparavant, vous pouvez voir que ce est un fichier de mise en œuvre pour une classe spécifique. Mais il n'y a pas partout principale. Alors, où est le principal? En fait, il se agit d'un principal, mais le principale est en fait caché. Le principal est ici. Cela semble familier. Donc, fondamentalement, ce iOS est de faire l'intérieur principale est que chaque fois que principal est appelé, qui est essentiellement chaque fois que l'application est exécutée, elle crée un objet appelé AppDelegate. Comme je l'ai mentionné avant, l'ensemble application est en fait un objet en lui-même. Donc, de cette manière, essentiellement le iOS est dit le compilateur que OK, je vais créer un produit appelé AppDelegate, et que va être mon application. Donc, vous devez aller à travers cette AppDelegate et voir ce que ce gars fait. Mon travail est fait pour moi. Et dans AppDelegate vous pouvez voir que il ya quelques fonctions vraiment bizarre, Eh bien en fait des méthodes, que Apple a déjà donné. Qu'est-ce que c'est? Ce sont en fait seulement protocoles que je parlais. Donc, ce sont des événements que Apple vous a donné pour commencer. Il n'y a rien dans certains des fonctions en ce moment, mais si nous voulons initialiser quelque chose pour notre application avant d'entrer dans l'affichage ne importe quelle vue, nous le faisons ici. Vous pouvez simplement lire le nom et je suppose l'événement est effectivement très clair. Alors maintenant, principale a créé un objet pour AppDelegate. Et ce AppDelegate va faire est en réalité aussi cachée de vous. Le AppDelegate va commencer charger le stock ViewController. Donc, ce est essentiellement va commencer le chargement de tous les points de vue que vous avez et juste de rendre la vue sur la base de la hiérarchie. Donc dans ce cas nous ne avons un point de vue, qui est ici. Donc, ce est la seule vue que ça va être appelé. La logique ViewController est ici. Ce est le code qui fait contrôle la vue que nous venons de voir. Très bien, nous allons faire quelque chose ici. Donc viewDidLoad sonne comme un événement, alors qu'en fait, ce est aussi un délégué, ce est aussi un protocole. Donc, quel que soit le point de vue est chargé, tout à l'intérieur de la fonction sera appelée. Dans ce cas, nous devrions voir "Bonjour Tianyu! "Si nous exécuter le programme. Il commence à faire un peu lent compilation de fichiers storyboard. Eh bien en fait, nous ne voyons une sortie pour elle. Ce est plutôt cool. Maintenant, nous allons effectivement faire Mario. Je vais définir le fonctionner très rapidement. marioWithLevels: résultats (int) de niveau. Très bien, ce est effectivement le génial caractéristique de code s auto complétion. Ainsi, lorsque vous écrivez pour entrer et tapez, il a déjà abandonné le modèle pour vous, ce qui est assez cool. Cela devrait vraiment regarder familiers à vous les gars. Désolé, ce est de ma faute. Très bien, cool. Cette logique devrait ressembler vraiment familier à vous les gars, surtout juste Mario. Mais nous allons maintenant imprimer pour la console à chaque fois unique, parce que nous voulons garder en quelque sorte une trace de ce que nous publions. Nous allons utiliser le résultats en quelque sorte plus tard, pour afficher l'impression à entraîner à l'utilisateur. Ainsi, au lieu nous sommes juste nslogging tout, que nous faisons tout stockage en conséquence fonction d'appel, mais la logique est exactement le même. Après nous terminons, nous il suffit d'imprimer nos résultats. Et ici, au lieu d'imprimer mon nom, nous allons appeler une fonction. Voyons ce qui se passe. Oops, évidemment. Nous avons une belle petite pyramide ici. Il se agit essentiellement C, nous sommes juste manipulation où vous appelez une fonction et comment ne fonction ressembler. Il ya rien de différent. Mais ce est en fait pas très excitant ici, parce que nous ne voyons pas quelque chose de l'application iPhone. Donc, si vous avez réellement un iPhone app-- si vous avez réellement Mario iOS droit maintenant, vous ne allez pas pour voir tout ce qui n'a rien à voir avec Mario parce toutes ces sorties dans une console sont cachés à partir d'un utilisateur. Ce est ce que vous voyez, qui est "Bonjour tout le monde !!!" Pas bon. Maintenant, nous allons essayer de faire de l'utilisateur voir exactement ce que nous allons imprimer. Donc, nous ne avons pas besoin d'étiqueter plus. Essayons de comprendre quelque chose chose qui pourrait être utile. Il est en fait une élément qui est appelée champ de texte, qui pourrait être très utile pour nous. Il présente essentiellement une région de texte qui peut être édité. Alors que l'air vraiment utile. Maintenant, nous allons le faire glisser et déposez-le. Wow, nous avons une vue de texte à notre avis, vraiment envie. Ce est un peu trop grand. Faisons plus petit. Mettez-le dans le centre. Le rendre plus petit ainsi. Maintenant nous avons une vue de texte, que nous pourrions être utilisé pour afficher notre résultat final. Mais maintenant il est certainement pas aller travailler car il est l'no-- ViewController nous venons défini ne sait pas que il est une vue de texte là-bas. Nous devons donc en quelque sorte lier le mode de texte que nous venons créé avec la classe que a déjà venir avec nous. La façon dont nous faisons qui est en fait vraiment magique. Donc, ouvrez storyboard. Il ya une spéciale [inaudible] appelé [? assistant?] [inaudible]. Lorsque vous cliquez sur ça, ce est va ouvrir deux fichiers. L'un est une classe et l'autre est une vue correspondant pour cela. Ce est très, très utile. Et nous allons va juste dans le fichier .h. Contrôle, ce est [inaudible] logique. Contrôle et faites glisser la presse Voir texte dans la déclaration. Nous allons appeler cela outputView. Connectez. Nous avons donc ici un nouveau déclarée propriété pour notre classe de ViewController. Et la nouvelle propriété est juste la vue de texte nous avons créé dans le bâtiment de l'interface. Ainsi de cette façon nous pouvions l'accès de toutes les données et tout ce qui est à l'intérieur de manipuler la vue de sortie, ce qui est génial. Donc, dans notre code actuel, nous allons faire quelque chose avec elle. Alors, cette fois quand nous sommes comme l'impression le résultat final pour Mario, nous sommes en ne enregistrant pas rien. Je veux dire que nous pouvions garder la déclaration d'enregistrement. En plus de cela, nous envoyer le lecture que nous venons créé à la vue de sortie, qui est une interface textview nous venons de créer. Voyons maintenant ce qui se passe. Hou La La. Nous avons une pyramide dans l'application dès maintenant. Ainsi, l'utilisateur peut voir notre production parce nous avons copié la sortie de notre code à notre interface. Il est assez bon. Ce est en fait pas si excitante parce que nous can-- Tout le soft est fait est montrant une pyramide à vous, et il n'y a rien que vous pouvez faire à ce sujet. Ce ne est pas particulièrement excitant. Alors maintenant, nous allons faire un bouton qui va effacer les vues. Semble qu'un bouton sera utile. Faites glisser-déposer. Un bouton. Bouton deux. Alors, quand nous cliquons sur le gauche bouton, la vue doit effacer. Il devrait y avoir rien sur l'écran. Et quand nous cliquons sur le bouton droit, Mario, la vue va apparaître à nouveau. Ainsi de cette façon nous faisons aussi le des trucs de magie, de contrôle et de glisser à la déclaration de classe dans le director-- assistant dans la visionneuse assistant. Dans ce cas, nous spécifions que cela devrait être une action. clearMario. Donc, ici, nous avons déjà créé une action appelée clearMario, qui est la méthode qui serait appelé chaque fois que nous sur la touche CLEAR. Donc, dans notre réalité code, disons simplement mettre le texte de sortie et la vue de sortie en rien, et de cette façon il paraît clair. En plus de cela, nous allons créer une autre méthode appelée runMario. Oh désolé, cela ne devrait pas être une propriété. Très bien, ce devrait être une action aussi bien. Lorsque cette fonction est appelé, lancez simplement Mario dix. Espérons que ce sera très bien. Est-il compiler? Oui. Maintenant, nous avons une vue. Nous avons une sortie. Et nous allons voir ce qui arrive. Ce est parti. Il est de retour. Nous avons donc ici spécifiée ce genre de fonction sera appelée quand nous tapons dans quelque chose, quand on appuie sur un bouton spécifique. Ce est essentiellement le programme d'action de la cible pour event driven la programmation en Objective C. En plus de cela, ce ne est pas très excitant parce que nous ne pouvons pas vraiment changer à quelle hauteur la pyramide aura, nous voulons donc probablement en quelque sorte obtenir une entrée de l'utilisateur et changer la hauteur de la pyramide basée sur ce qu'ils sortie. Donc, nous allons le faire. Alors, cette fois, lorsque nous appelons runMario, nous ne nous appelons pas Mario directement. Le titre de celui-ci. Délégué. Ce est très intéressant. Qu'est-ce qu'un délégué? Je vais mettre l'auto ici. Et nous allons voir ce que cela signifie plus tard. Donc, ici, nous avons essentiellement créé un instance spécifique appelé une alerte de l'interface utilisateur vue. Une vue d'alerte de l'interface utilisateur est essentiellement ce que vous voulez voir tous les fois que quelque chose pops et vous demande pour l'entrée, comme ce qui se passera quand vous essayez d'acheter quelque chose sur un app store. En plus de cela, après avoir créer, nous montrons simplement l'alerte. Très bien, disons simplement rapidement Test cela fonctionnera ou pas. Ce est très cool. Maintenant, nous allons créer en fait une champ de saisie pour l'alerte de l'interface utilisateur. Ce est ainsi que nous faisons cela. Et nous devrions avoir une vue d'entrée pour l'alerte. Très cool. Disons simplement 10. Ce ne est pas de faire quelque chose de bien maintenant parce que l'appel fait n'a pas changé pour l'exécution de mario. Donc, ce est devenu un peu peu bizarre parce que chaque fois nous appuyer sur un bouton vers le bas, chaque fois que nous appuyez sur un bouton dans l'affichage des alertes, quelque chose devait arriver, mais il ne se produit pas. Comment pouvons-nous attrapons cela? Comment savons-nous que l'utilisateur a rejeté une vue d'alerte et déjà entré un numéro, parce maintenant rien ne se passe réellement. Eh bien, vous l'avez deviné à droite, la délégation. Donc, en plus de toutes ces déclarations, nous devons ajouter une nouvelle délégation à il a appelé UI affichage des alertes délégué. Alors que chaque simple interaction ou de l'événement que nous allons avoir en vue d'alerte de l'interface utilisateur va être manipulé par notre classe ainsi. Donc, en plus de cela, seront vue clic bouton d'alerte à l'index. Ce est atteinte. Donc, dans ce cas, nous avons already-- nous avons donc découvert un protocole gérera l'événement lorsque nous cliquons sur le bouton Terminé sur l'affichage des alertes. Donc, chaque fois que nous rejeter la affichage des alertes, ce qui devrait se produire. Permettez-moi de le tester très rapidement. Eh bien en fait, nous avons atteint ici. Donc, ici, ce que nous ne allons pas réellement obtenir est en fait obtenons the-- Donc, nous voulons sortir le texte que nous avons précédemment entré dans la vue d'alerte. Et sur la base du texte, nous sommes va afficher Mario. Cela se avère très rapidement si cela fonctionne ou non. Donc, dans ce cas, si nous entrée, disons, 10, nous devrions voir 10. Très bien, nous avons un certain nombre ici. Il est assez bon. Maintenant, la dernière étape sera donc la être-- dernière étape, nous devons faire maintenant est juste un appel avec Mario sur la base du niveau d'entrée que nous avons mis en affichage des alertes. Nous avons donc besoin de convertir cette chaîne dans iOS. Débordement statique est très impressionnant. Et ensuite nous appelons auto marioWithLevels valeur. Voyons veux que effectivement travailler ou non. Nous avons déjà donné une pyramide. Essayons de changer la hauteur. Qui fonctionne réellement. Ce est plutôt cool. Alors que maintenant vous pouvez simplement entrée la valeur que vous voulez. Disons simplement que quatre. Ce est assez impressionnant. Donc, ce est essentiellement un exemple très rapide pour savoir comment créer un projet dans le code de s et comment câbler vraiment rapidement certains événements et des fonctions très simples. Donc, la source va à mettre en ligne plus tard. Donc, si vous êtes intéressé dans la manière dont iOS Mario fonctionne, Je vais mettre exactement la même des projets sur le site Web de CS50 tard. Nous essentiellement fait avec le été, et avant que nous finissons Je veux juste vous indiquer les gars pour certaines ressources vraiment génial que sont disponibles en ligne. Évidemment la documentation d'Apple va être très utile. Mais en plus de cela, je ai surtout recommander des quatre sources, le code scolaires, maison de l'arbre, et AppCoda WWDC vidéos. école de code et de la maison de l'arbre sont deux sites Educatrices en ligne, qui se concentrent spécifiquement sur le génie logiciel. Surtout pour le code école, ils ont vraiment bon tutoriel sur iOS. Ce est un exemple très rapide pour elle. En fait, ils créent une très cute-- regarder ce petit mignons de l'iPhone mec là-bas, ce est assez impressionnant. Et la façon dont ils expliquent Objectif syntaxe de C est parfaitement clair. Maison de l'arbre est le même. Et AppCoda est un forum. Ce est en fait un blog qui a été exécuté par un C Objectif vraiment connu programmeur. Et tous ces tutoriels sont dans AppCoda assez courte et facile à mettre en œuvre, fortement recommandé. Et si vous êtes un développeur, certainement aller vérifier la façon dont les vidéos WWDC où vous pouvez en apprendre davantage sur la dernière programmation iOS techniques, des API et des bibliothèques. Donc, ce est à peu près pour le séminaire. Merci beaucoup. Et je espère que vous avez du plaisir créer votre propre application iOS.