1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Séminaire] [iOS: Rédaction applications Like a Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Université de Harvard] 3 00:00:04,000 --> 00:00:08,000 [C'est CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> D'accord, tout le monde, bienvenue à iOS: les applications écriture comme un patron. 5 00:00:12,000 --> 00:00:16,000 Ce séminaire va se concentrer sur l'écriture des applications pour l'iPhone 6 00:00:16,000 --> 00:00:19,000 et à son tour écrire des applications pour l'iPad, et nous sommes donc fondamentalement va marcher à travers 7 00:00:19,000 --> 00:00:23,000 un couple de différents exemples de la façon de faire une application, un jeu simple comme Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 ou si vous êtes plus intéressé à faire un soft comme une sorte de lecteur de nouvelles 9 00:00:26,000 --> 00:00:30,000 ou quelque chose qui interagit avec l'Internet, je vais en parler aussi. 10 00:00:30,000 --> 00:00:32,000 Voici notre bref ordre du jour. 11 00:00:32,000 --> 00:00:36,000 >> Applications IOS sont écrits dans un langage appelé Objective-C, 12 00:00:36,000 --> 00:00:39,000 et donc c'est un peu similaire à C, mais pas vraiment du tout, 13 00:00:39,000 --> 00:00:41,000 donc nous allons parler un peu de la langue elle-même 14 00:00:41,000 --> 00:00:45,000 et puis comment créer des applications iPhone en utilisant ce programme soft appelé XCode, 15 00:00:45,000 --> 00:00:48,000 qui, si vous ne l'avez pas encore téléchargé, n'hésitez pas à commencer le téléchargement maintenant. 16 00:00:48,000 --> 00:00:50,000 C'est plusieurs giga-octets. 17 00:00:50,000 --> 00:00:54,000 Il devrait être disponible sur l'App Store, vous aurez donc besoin d'avoir un Mac 18 00:00:54,000 --> 00:00:57,000 idéalement utilisez la dernière version de Mac OS X. 19 00:00:57,000 --> 00:00:59,000 Si vous n'êtes pas, pas de problème. 20 00:00:59,000 --> 00:01:02,000 Nous avons Mac dans le centre de sciences à votre disposition 21 00:01:02,000 --> 00:01:05,000 avec XCode installé, et alors n'hésitez pas à utiliser ceux pour le développement. 22 00:01:05,000 --> 00:01:07,000 Si vous voulez faire une application mais vous n'avez pas un Mac, ne vous inquiétez pas. 23 00:01:07,000 --> 00:01:09,000 Il ya beaucoup de ressources du campus pour cela. 24 00:01:09,000 --> 00:01:15,000 Et alors, nous allons couvrir 2 exemples agrandie de différentes applications que vous pouvez faire. 25 00:01:15,000 --> 00:01:19,000 Objective-C est techniquement ce qu'on appelle un super ensemble de C. 26 00:01:19,000 --> 00:01:24,000 Cela signifie que tout code C est également valable code Objective-C. 27 00:01:24,000 --> 00:01:29,000 Cela signifie que nous avons un peu scotchée sur quelques fonctionnalités supplémentaires à C. 28 00:01:29,000 --> 00:01:33,000 Certaines de ces caractéristiques comprennent pas avoir à jamais écrire malloc encore, Dieu merci, 29 00:01:33,000 --> 00:01:36,000 sans avoir à vous soucier de ces pointeurs stupides et les libérer et tout ça 30 00:01:36,000 --> 00:01:40,000 vous avez détesté à propos de C, et c'est le genre de parti en Objective-C. 31 00:01:40,000 --> 00:01:43,000 >> Maintenant, Objective-C dispose également d'une bibliothèque standard beaucoup plus grande, 32 00:01:43,000 --> 00:01:47,000 il ya donc beaucoup plus de fonctionnalités que vous obtenez pour l'intérieur sans Objective-C. 33 00:01:47,000 --> 00:01:50,000 Rappelez-vous quand nous écrivions PHP nous avons remarqué que nous sommes passés de 34 00:01:50,000 --> 00:01:54,000 cette petite langue de la bibliothèque géante de toutes ces choses folles que vous pouvez faire. 35 00:01:54,000 --> 00:01:56,000 La même chose se passe dans iOS. 36 00:01:56,000 --> 00:01:59,000 Il ya des objets pour des choses comme le calendrier bouddhiste, et vraiment rien 37 00:01:59,000 --> 00:02:05,000 vous pouvez éventuellement penser existe probablement déjà dans la mise en œuvre Objective-C. 38 00:02:05,000 --> 00:02:08,000 La partie objective de l'Objective-C est quelque chose de référencement 39 00:02:08,000 --> 00:02:11,000 appelé Object-Oriented Programming. 40 00:02:11,000 --> 00:02:14,000 Il s'agit d'une sorte de nouveau concept, mais nous avons fait surtout appris 41 00:02:14,000 --> 00:02:17,000 beaucoup de ces concepts déjà. 42 00:02:17,000 --> 00:02:19,000 L'idée derrière la programmation orientée objet, c'est que vous allez structurer 43 00:02:19,000 --> 00:02:23,000 une grande partie de votre code autour de ces choses appelées classes, 44 00:02:23,000 --> 00:02:26,000 Ces classes sont vraiment glorifié structures. 45 00:02:26,000 --> 00:02:30,000 A l'intérieur d'une structure en gros nous avons dit ici, c'est une chose, 46 00:02:30,000 --> 00:02:32,000 et cette chose peut avoir des membres. 47 00:02:32,000 --> 00:02:35,000 Par exemple, un noeud dans une liste chaînée pourrait avoir d'autres choses 48 00:02:35,000 --> 00:02:38,000 comme une valeur, un pointeur vers le nœud suivant dans la liste, 49 00:02:38,000 --> 00:02:44,000 et en même temps que le pointeur et cette valeur a composé ce seul cas d'un struct. 50 00:02:44,000 --> 00:02:47,000 Les classes sont très similaires, sauf 51 00:02:47,000 --> 00:02:50,000 classes peuvent aussi avoir des fonctions à l'intérieur d'eux. 52 00:02:50,000 --> 00:02:54,000 Lorsque nous avons déclaré un struct, nous ne pouvions dire ou int n * nœud suivant. 53 00:02:54,000 --> 00:02:57,000 >> Maintenant, avec Objective-C, nous pouvons effectivement mis fonctions 54 00:02:57,000 --> 00:02:59,000 l'intérieur de ces choses. 55 00:02:59,000 --> 00:03:03,000 Une autre chose que les classes puissent faire, c'est qu'ils peuvent hériter d'autres classes de données. 56 00:03:03,000 --> 00:03:07,000 Par exemple, nous allons regarder un tas de haut-classes Objective-C. 57 00:03:07,000 --> 00:03:11,000 L'un d'eux pourrait être la classe qui représente le point de vue d'un écran, 58 00:03:11,000 --> 00:03:14,000 et ainsi de suite en disant que je veux mettre en oeuvre mon propre point de vue 59 00:03:14,000 --> 00:03:18,000 nous avons essentiellement dire quelqu'un chez Apple, les gens probablement très belles, 60 00:03:18,000 --> 00:03:21,000 a écrit cette classe pour moi, et il gère les choses comme l'affichage des boutons 61 00:03:21,000 --> 00:03:25,000 ou de rendre l'écran, et nous serions vraiment peinée 62 00:03:25,000 --> 00:03:28,000 de mettre en œuvre toutes les fonctionnalités que nous-mêmes, et ainsi de suite, simplement en 63 00:03:28,000 --> 00:03:31,000 héritant de données, on peut dire tout ce que vous avez fait dans cette classe 64 00:03:31,000 --> 00:03:34,000 Je tiens également à l'intérieur de ma classe, et puis je vais faire d'autres choses, 65 00:03:34,000 --> 00:03:37,000 à savoir la mise en œuvre d'une application. 66 00:03:37,000 --> 00:03:40,000 C'est ce que l'héritage mot signifie. Nous verrons un exemple plus concret. 67 00:03:40,000 --> 00:03:42,000 >> Et enfin, la clé avec la programmation orientée objet est que 68 00:03:42,000 --> 00:03:45,000 il conduit à l'encapsulation de données. 69 00:03:45,000 --> 00:03:48,000 Dans certains de nos problèmes établit que nous pourrions avoir ces grandes variables globales 70 00:03:48,000 --> 00:03:51,000 et globales partout, et c'est comme ça que nous avions garder la trace de l'Etat. 71 00:03:51,000 --> 00:03:55,000 Avec des classes, nous pouvons commencer à encapsuler l'information à l'intérieur d'un objet. 72 00:03:55,000 --> 00:03:58,000 Si nous avons un écran de notre application, nous n'avons pas vraiment besoin d'avoir des données de 73 00:03:58,000 --> 00:04:01,000 un autre écran dans notre intérieur de cette application, 74 00:04:01,000 --> 00:04:04,000 et ainsi en encapsulant les choses dans les classes ce qui conduit effectivement 75 00:04:04,000 --> 00:04:08,000 à la conception de code bien meilleur, et cela est possible avec certaines des fonctionnalités supplémentaires 76 00:04:08,000 --> 00:04:11,000 d'Objective-C. 77 00:04:11,000 --> 00:04:15,000 Avertissement, la syntaxe de l'Objective-C est la banane. 78 00:04:15,000 --> 00:04:19,000 Il est comme rien que nous avons vu auparavant, 79 00:04:19,000 --> 00:04:22,000 il est donc un peu d'une courbe d'apprentissage pour s'habituer à 80 00:04:22,000 --> 00:04:24,000 ce que le diable que cela signifie? 81 00:04:24,000 --> 00:04:27,000 Mais une fois que vous avez passé cette courbe d'apprentissage initiale, il est vraiment, vraiment bon 82 00:04:27,000 --> 00:04:29,000 pour commencer à écrire des applications. 83 00:04:29,000 --> 00:04:33,000 >> Pour déclarer une classe, dire ici, c'est ma classe, il existe, 84 00:04:33,000 --> 00:04:35,000 et peut-être voici quelques choses que je vais définir plus tard, 85 00:04:35,000 --> 00:04:38,000 Je vais dire @ interface. 86 00:04:38,000 --> 00:04:41,000 Je vais dire @ interface. Je vais vous donner ma classe un nom. 87 00:04:41,000 --> 00:04:43,000 Et puis, plus tard ailleurs je vais dire @ end, 88 00:04:43,000 --> 00:04:46,000 et tout le reste de l'interface et la fin @ @ 89 00:04:46,000 --> 00:04:48,000 va être ma classe. 90 00:04:48,000 --> 00:04:51,000 Cela va être ce qu'il ya dedans de nos fichiers. H. 91 00:04:51,000 --> 00:04:55,000 Tout comme dans nos fichiers. C h a dit essentiellement voici quelques choses qui existent. 92 00:04:55,000 --> 00:04:57,000 Je ne suis pas nécessairement vous dire ce qu'ils font encore, 93 00:04:57,000 --> 00:04:59,000 mais le compilateur a besoin de savoir qu'ils existent. 94 00:04:59,000 --> 00:05:04,000 Plus tard, à l'intérieur de notre. Fichiers m-m parce que pour Objective-C 95 00:05:04,000 --> 00:05:08,000 C'est là que nous allons en fait de définir ce que ces classes font. 96 00:05:08,000 --> 00:05:11,000 Tout comme nos fichiers c., Nous avons fourni une implémentation pour les fonctions. 97 00:05:11,000 --> 00:05:15,000 A l'intérieur de notre. M fichier que nous allons dire ici, c'est que toutes les fonctions 98 00:05:15,000 --> 00:05:18,000 à l'intérieur de ma classe-ce qu'ils font tous. 99 00:05:18,000 --> 00:05:22,000 Et enfin, à l'intérieur d'une structure, on pourrait dire à l'intérieur de ces accolades 100 00:05:22,000 --> 00:05:25,000 int, n ou le nœud suivant * 101 00:05:25,000 --> 00:05:28,000 et en Objective-C, nous allons utiliser le mot clé @ property, 102 00:05:28,000 --> 00:05:31,000 et c'est ce qui va définir les propriétés, 103 00:05:31,000 --> 00:05:36,000 ou les fonctions non-qui font partie de mes classes. 104 00:05:36,000 --> 00:05:40,000 >> Appel de fonctions en Objective-C est aussi la banane. 105 00:05:40,000 --> 00:05:43,000 Lorsque nous avons déclaré des fonctions en C nous dit quelque chose comme int foo 106 00:05:43,000 --> 00:05:46,000 et ouvert parenthèses, puis lui a donné une liste d'arguments. 107 00:05:46,000 --> 00:05:51,000 C'est ce que déclare méthodes ou fonctions ressemble en Objective-C. 108 00:05:51,000 --> 00:05:54,000 Si je veux déclarer une fonction ou d'une méthode 109 00:05:54,000 --> 00:05:58,000 où je dis que la méthode est vraiment juste une fonction qui est membre d'une classe, 110 00:05:58,000 --> 00:06:01,000 la gentillesse du interchangeables, mais pas vraiment, 111 00:06:01,000 --> 00:06:03,000 donc à l'intérieur de ma méthode, je veux créer une nouvelle méthode. 112 00:06:03,000 --> 00:06:06,000 Ça va rien renvoyer, donc ça va être de type void. 113 00:06:06,000 --> 00:06:08,000 C'est le type de retour de ma fonction. 114 00:06:08,000 --> 00:06:11,000 Maintenant, nous avons parens ici parce-que je ne sais pas. 115 00:06:11,000 --> 00:06:14,000 Prochaine va être le nom de ma fonction, 116 00:06:14,000 --> 00:06:17,000 et puis finalement nous avons un point-virgule comme nous avions en C. 117 00:06:17,000 --> 00:06:19,000 Ce qui est nouveau ici, c'est ce gars là. 118 00:06:19,000 --> 00:06:22,000 Ce trait d'union est réellement nécessaire, et ce que cela dit, c'est que 119 00:06:22,000 --> 00:06:26,000 cette méthode ici doit être appelée sur une instance d'une classe. 120 00:06:26,000 --> 00:06:29,000 >> Après, nous avons déclaré nos structs nous avons probablement dit quelque chose comme 121 00:06:29,000 --> 00:06:32,000 n nœuds struct, et qui a créé 122 00:06:32,000 --> 00:06:35,000 ou instancié un de ces structs pour que je puisse réellement commencer à travailler 123 00:06:35,000 --> 00:06:38,000 avec ce qui est à l'intérieur de celui-ci, si ce trait signifie que nous devons 124 00:06:38,000 --> 00:06:41,000 instancier la classe juste comme nous avons instancié que struct 125 00:06:41,000 --> 00:06:43,000 avant que nous puissions appeler cette méthode sur elle. 126 00:06:43,000 --> 00:06:46,000 Si je veux commencer à ajouter des arguments à mes méthodes 127 00:06:46,000 --> 00:06:48,000 il devient encore plus bananes. 128 00:06:48,000 --> 00:06:50,000 Voici mon nom de la méthode. 129 00:06:50,000 --> 00:06:53,000 Ensuite, je vais avoir un côlon, du côlon et après ce qu'il dit ici vient des arguments. 130 00:06:53,000 --> 00:06:56,000 Cette méthode prend un argument. 131 00:06:56,000 --> 00:06:59,000 Le type de son argument est un int, et le nom de cet argument 132 00:06:59,000 --> 00:07:03,000 ou la variable que je vais commencer à utiliser à l'intérieur de la méthode est appelée i. 133 00:07:03,000 --> 00:07:05,000 Encore une fois, c'est la méthode. Elle prend un argument. 134 00:07:05,000 --> 00:07:10,000 >> Si vous voulez commencer à ajouter plus d'arguments qu'il obtient plus de bananes 135 00:07:10,000 --> 00:07:13,000 dans ce que nous avons dit ici côlon qui vient à ma liste d'arguments. 136 00:07:13,000 --> 00:07:15,000 Ce premier argument est un nombre entier. 137 00:07:15,000 --> 00:07:17,000 Maintenant, ce deuxième argument est intéressant. 138 00:07:17,000 --> 00:07:20,000 La variable que je vais utiliser à l'intérieur de ma fonction 139 00:07:20,000 --> 00:07:23,000 est appelée f, donc à l'intérieur de ma fonction je pourrais dire 140 00:07:23,000 --> 00:07:25,000 f + = 1 ou quelque chose. 141 00:07:25,000 --> 00:07:30,000 Cette chose ici est une clé pour cet argument ou paramètre. 142 00:07:30,000 --> 00:07:34,000 Tout comme nous avons eu paires clé-valeur et quelque chose comme JSON ou tableaux associatifs 143 00:07:34,000 --> 00:07:37,000 Objective-C a pris la décision de dire, d'accord, juste pour que ce soit vraiment clair 144 00:07:37,000 --> 00:07:39,000 lorsque vous appelez une méthode que tous ces paramètres sont 145 00:07:39,000 --> 00:07:41,000 Je vais en fait pour tous les nommer. 146 00:07:41,000 --> 00:07:45,000 Lorsque vous appelez une méthode, vous allez vraiment vous dire andFloat, 147 00:07:45,000 --> 00:07:47,000 et puis vous passerez devant po 148 00:07:47,000 --> 00:07:50,000 >> Fait intéressant, celui-ci n'est pas nommé, mais tous les autres paramètres sont, 149 00:07:50,000 --> 00:07:53,000 si nous avions un 3ème argument que je pourrais dire andFloat 150 00:07:53,000 --> 00:07:56,000 et un autre flotteur et ainsi de suite. 151 00:07:56,000 --> 00:08:01,000 Quand j'appelle ces méthodes, il est de bananes cours, 152 00:08:01,000 --> 00:08:04,000 donc si j'ai un objet, et j'ai défini une méthode appelée foo, 153 00:08:04,000 --> 00:08:09,000 et je veux l'appeler, plutôt que de dire foo ouvert / parens proches 154 00:08:09,000 --> 00:08:11,000 Je vais ouvrir une parenthèse. 155 00:08:11,000 --> 00:08:13,000 Voici le nom de ma méthode. 156 00:08:13,000 --> 00:08:17,000 Je vais fermer la parenthèse, et c'est l'objet J'appelle ça de suite. 157 00:08:17,000 --> 00:08:20,000 Rappelez-vous, toutes ces méthodes existent au sein des classes 158 00:08:20,000 --> 00:08:23,000 parce que les classes peuvent avoir des méthodes définies à l'intérieur d'eux. 159 00:08:23,000 --> 00:08:26,000 >> Ici, j'ai arbitrairement créé un objet d'une classe, 160 00:08:26,000 --> 00:08:28,000 et c'est la syntaxe pour faire cela. 161 00:08:28,000 --> 00:08:31,000 Il ya 2 étapes à la création d'un objet. 162 00:08:31,000 --> 00:08:34,000 La première étape consiste à dire que je veux allouer de l'espace. 163 00:08:34,000 --> 00:08:37,000 C'est l'équivalent d'un malloc. Nous n'avons pas besoin de dire plus malloc. 164 00:08:37,000 --> 00:08:42,000 Nous avons abandonné la m, a alloc, et a remplacé le c. Avec. M. 165 00:08:42,000 --> 00:08:47,000 Après avoir quelque chose de alloc puis nous nous devez l'initialiser. 166 00:08:47,000 --> 00:08:49,000 Fondamentalement, lorsque vous créez des objets que vous voudrez peut-être avoir une certaine logique 167 00:08:49,000 --> 00:08:53,000 qui s'exécute lorsque ils ont été créés, de sorte que vous pouvez passer des valeurs par défaut 168 00:08:53,000 --> 00:08:57,000 ou quelque chose comme ça, et si cette méthode init est ce qui crée en fait l'objet. 169 00:08:57,000 --> 00:08:59,000 Nous avons d'abord allouer de l'espace, tout comme nous l'avons fait en C, 170 00:08:59,000 --> 00:09:04,000 et puis nous l'initialiser, ce qui peut ou ne peut pas faire grand-chose. 171 00:09:04,000 --> 00:09:07,000 Puis nous revenons cette chose dans un objet o. 172 00:09:07,000 --> 00:09:09,000 Il est une star ici parce que cela est techniquement un pointeur, 173 00:09:09,000 --> 00:09:12,000 mais ne vous inquiétez pas, les pointeurs ne sont pas un gros problème en Objective-C plus. 174 00:09:12,000 --> 00:09:15,000 >> Maintenant, nous avons instancié cette classe NSObject appelé, 175 00:09:15,000 --> 00:09:19,000 et c'est juste une classe aléatoire que Apple a. 176 00:09:19,000 --> 00:09:22,000 Nous avons instancié cela, et maintenant j'ai une instance de cette classe 177 00:09:22,000 --> 00:09:25,000 o dans ce but, ce qui signifie que si je définis 178 00:09:25,000 --> 00:09:29,000 ces méthodes que je pouvais les appeler comme ça. 179 00:09:29,000 --> 00:09:31,000 De même, si je voulais appeler une méthode avec un argument, 180 00:09:31,000 --> 00:09:34,000 c'est donc la méthode bar, qui prend un argument, 181 00:09:34,000 --> 00:09:38,000 et voici le baz: Méthode qux, donc cela prend 2 arguments. 182 00:09:38,000 --> 00:09:44,000 Cette appelle une fonction sur cette objet o. 183 00:09:44,000 --> 00:09:46,000 Donner un sens? 184 00:09:46,000 --> 00:09:50,000 La syntaxe doit avoir du sens, mais vous sorte de s'habituer à elle. 185 00:09:50,000 --> 00:09:54,000 >> Ok, nous allons parler de quelques choses qui sont intégrées dans Objective-C 186 00:09:54,000 --> 00:09:56,000 qui ne sont pas nécessairement intégrés dans C. 187 00:09:56,000 --> 00:09:59,000 En C, nous sorte de dû faire face à des chaînes comme ces tableaux de caractères stupides, 188 00:09:59,000 --> 00:10:01,000 et il a vraiment ennuyeux. 189 00:10:01,000 --> 00:10:04,000 Objective-C a ceux qui les construit en pour nous, et il est construit en 190 00:10:04,000 --> 00:10:06,000 en utilisant cette classe NSString appelée. 191 00:10:06,000 --> 00:10:10,000 Quand je veux créer un NSString nous avons syntaxe plus mystérieux. 192 00:10:10,000 --> 00:10:15,000 Plutôt que de dire "CS50" nous disons @ "CS50" 193 00:10:15,000 --> 00:10:17,000 et ce n'est que la syntaxe de déclaration des chaînes en Objective-C. 194 00:10:17,000 --> 00:10:21,000 Cela est extrêmement facile d'oublier, il ne faut pas. 195 00:10:21,000 --> 00:10:24,000 Maintenant, une fois que j'ai ça, c'est une chaîne, mais notez 196 00:10:24,000 --> 00:10:26,000 c'est vraiment juste un objet. 197 00:10:26,000 --> 00:10:30,000 J'ai dit NSString, ce qui signifie que je instancié la classe 198 00:10:30,000 --> 00:10:32,000 NSString appelée, que quelqu'un d'autre a écrit pour moi, 199 00:10:32,000 --> 00:10:35,000 et ils étaient très gentils, et maintenant 200 00:10:35,000 --> 00:10:37,000 Je peux commencer à appeler des méthodes sur elle. 201 00:10:37,000 --> 00:10:40,000 Si j'appelle la longueur de cette méthode a pour objet 202 00:10:40,000 --> 00:10:43,000 ça va me revenir la longueur de la chaîne. 203 00:10:43,000 --> 00:10:45,000 C'est exactement comme strlen en C. 204 00:10:45,000 --> 00:10:47,000 Ce serait revenir 4. 205 00:10:47,000 --> 00:10:51,000 >> De même, une autre méthode je pourrais avoir besoin de se soucier de ce characterAtIndex. 206 00:10:51,000 --> 00:10:54,000 Il s'agit d'une méthode qui est dit sur cette chaîne s 207 00:10:54,000 --> 00:10:57,000 Je veux que vous pour obtenir le personnage 0e, 208 00:10:57,000 --> 00:10:59,000 et donc ce serait revenir à moi le caractère c, 209 00:10:59,000 --> 00:11:02,000 et il ya tout un tas de plusieurs de ces méthodes que vous pouvez très facilement sur Google. 210 00:11:02,000 --> 00:11:07,000 La documentation d'Apple est grand, et nous allons jeter un coup d'oeil à cela dans un peu. 211 00:11:07,000 --> 00:11:09,000 Ce sont des chaînes de caractères. 212 00:11:09,000 --> 00:11:11,000 Nous avons également des tableaux de taille variable construit po 213 00:11:11,000 --> 00:11:13,000 Rappelez-vous dans C quand nous avons déclaré un tableau 214 00:11:13,000 --> 00:11:16,000 nous avions à dire, vous avez 5 éléments, à la fin de l'histoire. 215 00:11:16,000 --> 00:11:18,000 Quand nous sommes arrivés à JavaScript et PHP nous pourrions commencer 216 00:11:18,000 --> 00:11:20,000 faire des choses comme l'ajout d'éléments ou éléments mobiles. 217 00:11:20,000 --> 00:11:22,000 Nous pouvons faire la même chose en Objective-C. 218 00:11:22,000 --> 00:11:26,000 Plutôt que de créer un tableau de la façon normale C 219 00:11:26,000 --> 00:11:30,000 nous avons encore une autre classe appelée NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 Il ya aussi NSArray, 221 00:11:33,000 --> 00:11:35,000 et cela va essentiellement encapsuler une matrice. 222 00:11:35,000 --> 00:11:38,000 Ceci dit, la première chose que je veux faire est que je veux consacrer 223 00:11:38,000 --> 00:11:41,000 l'espace pour une nouvelle baie, et après je l'ai allouer 224 00:11:41,000 --> 00:11:43,000 J'ai alors besoin de l'initialiser. 225 00:11:43,000 --> 00:11:45,000 Encore une fois, l'appel de ces 2 méthodes. 226 00:11:45,000 --> 00:11:48,000 Maintenant, cela signifie que l'intérieur de cet objet une 227 00:11:48,000 --> 00:11:50,000 J'ai un tableau vide assis là. 228 00:11:50,000 --> 00:11:54,000 Si je veux ajouter quelque chose à ce tableau, je peux appeler la méthode addObject. 229 00:11:54,000 --> 00:11:59,000 Je veux ajouter un objet à un tableau, et je veux ajouter la chaîne CS50. 230 00:11:59,000 --> 00:12:02,000 Si je voulais retirer l'inverse que je peux dire que je tiens à 231 00:12:02,000 --> 00:12:09,000 retirer l'objet à la première place sur le tableau ou l'objet a. 232 00:12:09,000 --> 00:12:11,000 >> Donner un sens? 233 00:12:11,000 --> 00:12:14,000 Ok, vous sorte de s'habituer à cette chose crochet. 234 00:12:14,000 --> 00:12:18,000 Soit dit en passant, à l'intérieur d'un grand nombre de bibliothèques d'Apple, vous verrez ce NS. 235 00:12:18,000 --> 00:12:21,000 La Nouvelle-Écosse se fait pour l'étape suivante, qui est l'une des sociétés Steve premiers emplois, 236 00:12:21,000 --> 00:12:24,000 et c'est là qu'il a vraiment commencé à écrire beaucoup de code 237 00:12:24,000 --> 00:12:27,000 comme une sorte de base de Mac OS X et tous les autres trucs, 238 00:12:27,000 --> 00:12:32,000 et si ce NS est une sorte de cet héritage bien crier à l'une des sociétés antérieures 239 00:12:32,000 --> 00:12:34,000 l'époque où Apple a été débutez. 240 00:12:34,000 --> 00:12:36,000 Elle est partout. 241 00:12:36,000 --> 00:12:41,000 Jetons un coup d'oeil à une approche holistique Objective-C de plus par exemple. 242 00:12:41,000 --> 00:12:44,000 Ici, je suis à l'intérieur de XCode. 243 00:12:44,000 --> 00:12:47,000 Pour arriver ici, j'ai téléchargé XCode sur l'App Store, 244 00:12:47,000 --> 00:12:50,000 ai ouvert, et puis je suis ici pour le fichier, 245 00:12:50,000 --> 00:12:54,000 ici à nouveau projet, puis. 246 00:12:54,000 --> 00:12:57,000 Après je fais ce que j'ai toutes ces options de ce que je veux créer, 247 00:12:57,000 --> 00:12:59,000 et nous allons donc jeter un oeil à ces options plus tard, 248 00:12:59,000 --> 00:13:03,000 mais juste pour cet exemple, parce que nous ne sommes pas vraiment allez avoir une application encore, 249 00:13:03,000 --> 00:13:06,000 Je suis venu ici-bas, et j'ai dit outil de ligne de commande, 250 00:13:06,000 --> 00:13:09,000 et c'est un soft que je pouvais courir à la ligne de commande 251 00:13:09,000 --> 00:13:12,000 tout comme nous avons mis en place à partir de C. 252 00:13:12,000 --> 00:13:16,000 C'est comme ça que j'ai créé ce projet, et maintenant je suis ici, 253 00:13:16,000 --> 00:13:20,000 Examinons donc d'abord à ce fichier, et cela devrait ressembler assez familier. 254 00:13:20,000 --> 00:13:24,000 J'ai un nom int. Il est mon ami argc, argv mon autre copain. 255 00:13:24,000 --> 00:13:30,000 Et ainsi, nous pouvons voir que c'est le point d'entrée pour mon premier Objectif-C. 256 00:13:30,000 --> 00:13:32,000 Ici, nous pouvons ignorer cela pour l'instant. 257 00:13:32,000 --> 00:13:35,000 Il s'agit essentiellement des trucs gestion de la mémoire que vous n'aurez pas vraiment 258 00:13:35,000 --> 00:13:37,000 jamais avoir à s'inquiéter. 259 00:13:37,000 --> 00:13:39,000 >> Regardons ce premier bloc ici. 260 00:13:39,000 --> 00:13:46,000 Cette première ligne, si je dis Étudiant * alice = [alloc élèves [] init] ce que ça fait? 261 00:13:46,000 --> 00:13:50,000 Ce premier étudiant ici, c'est probablement une classe. 262 00:13:50,000 --> 00:13:54,000 Ce n'est pas une classe que Apple a écrit, mais c'est une classe que j'ai écrit. 263 00:13:54,000 --> 00:13:57,000 La première chose que je veux faire est que je veux allouer de l'espace pour un nouvel élève, 264 00:13:57,000 --> 00:14:00,000 et puis je veux l'initialiser, donc cela me redonne 265 00:14:00,000 --> 00:14:05,000 cet objet nouvel étudiant, et je suis stocker cela dans une variable appelée Alice. 266 00:14:05,000 --> 00:14:07,000 D'où vient cette classe vient-il? 267 00:14:07,000 --> 00:14:12,000 Eh bien, là-bas sur le côté gauche ce sont tous des fichiers différents à l'intérieur de mon projet. 268 00:14:12,000 --> 00:14:16,000 Nous pouvons voir ici j'ai un Student.h et un Student.m. 269 00:14:16,000 --> 00:14:20,000 Le fichier. H, rappelez-vous, c'est là que je déclare toutes les choses 270 00:14:20,000 --> 00:14:22,000 qui existent au sein de la classe. 271 00:14:22,000 --> 00:14:25,000 >> Jetons un coup d'oeil. 272 00:14:25,000 --> 00:14:29,000 Très bien, nous avons ici cette interface @, ce qui indique que voici 273 00:14:29,000 --> 00:14:33,000 les déclarations de tout ce qui existe au sein de ma classe. 274 00:14:33,000 --> 00:14:36,000 Puis-je avoir un côlon. Puis-je avoir cette chose NSObject. 275 00:14:36,000 --> 00:14:40,000 Cet côlon signifie que bit d'héritage que nous discutions un peu plus tôt. 276 00:14:40,000 --> 00:14:43,000 Ceci dit tout d'un NSObject peut faire 277 00:14:43,000 --> 00:14:46,000 où est cette classe NSObject écrit par quelqu'un d'autre, 278 00:14:46,000 --> 00:14:50,000 tout ce NSObject peut que je veux être en mesure de le faire. 279 00:14:50,000 --> 00:14:54,000 En disant: NSObject qui signifie que j'ai pratiquement 280 00:14:54,000 --> 00:14:58,000 hérité de toutes les fonctionnalités d'une autre classe. 281 00:14:58,000 --> 00:15:02,000 Cela m'a vraiment donné tout un tas de différentes méthodes et propriétés que je peux utiliser. 282 00:15:02,000 --> 00:15:05,000 Ici-bas, je crée 2 propriétés. 283 00:15:05,000 --> 00:15:08,000 Cela signifie que mon élève, s'il s'agissait d'un struct, ce serait les 2 choses 284 00:15:08,000 --> 00:15:11,000 à l'intérieur de ma structure, de sorte que chaque élève a un nom 285 00:15:11,000 --> 00:15:14,000 qui est une chaîne, et un étudiant dispose également d'un grade, 286 00:15:14,000 --> 00:15:17,000 qui est un int. 287 00:15:17,000 --> 00:15:23,000 >> Enfin, ici-bas, je vais créer une méthode pour mon élève. 288 00:15:23,000 --> 00:15:26,000 J'ai appelé ma méthode, initWithName, et il prend un argument, 289 00:15:26,000 --> 00:15:31,000 et que l'argument est une chaîne, et j'ai appelé le nommer. 290 00:15:31,000 --> 00:15:35,000 Maintenant, nous allons voir comment nous pouvons effectivement mis en œuvre cette classe. 291 00:15:35,000 --> 00:15:38,000 Ici, maintenant, je suis à l'intérieur de mon fichier. M, 292 00:15:38,000 --> 00:15:40,000 m pour la mise en œuvre, je suppose. 293 00:15:40,000 --> 00:15:44,000 J'ai mon œuvre, ma fin, et c'est là que je suis en train de définir 294 00:15:44,000 --> 00:15:47,000 ce initWithName fait. 295 00:15:47,000 --> 00:15:50,000 J'ai initWithName, le nom de mon paramètre, puis ce 296 00:15:50,000 --> 00:15:53,000 C'est là que je suis en train de créer un étudiant, 297 00:15:53,000 --> 00:15:56,000 et donc c'est un peu cryptique, mais c'est une sorte de passe-partout 298 00:15:56,000 --> 00:15:58,000 que vous souhaitez inclure dans vos constructeurs. 299 00:15:58,000 --> 00:16:02,000 Cette fonction d'initialisation ici, initWithName, est un type de constructeur. 300 00:16:02,000 --> 00:16:05,000 Vous êtes essentiellement la construction d'un objet nouvel étudiant 301 00:16:05,000 --> 00:16:07,000 et peut-être d'envoyer des données à l'intérieur de celui-ci. 302 00:16:07,000 --> 00:16:11,000 La première chose que je veux faire, c'est que je veux appeler init sur ce truc super. 303 00:16:11,000 --> 00:16:15,000 >> Rappelez-vous que quand j'ai dit de retour ici dans le fichier. H 304 00:16:15,000 --> 00:16:21,000 que tout un NSObject a un étudiant a par ailleurs. 305 00:16:21,000 --> 00:16:24,000 Cela signifie que lorsque je crée un étudiant que j'ai aussi besoin de faire est 306 00:16:24,000 --> 00:16:28,000 assurez-vous que le NSObject que je hériter de toutes ces données à partir de 307 00:16:28,000 --> 00:16:32,000 est également initialisée correctement. 308 00:16:32,000 --> 00:16:36,000 Ce que je dois dire, c'est ce qui se passe réellement superbe pour faire référence à la classe parente 309 00:16:36,000 --> 00:16:39,000 que je suis hériter de, donc je veux m'assurer que je initialiser 310 00:16:39,000 --> 00:16:43,000 tout ce que je suis en fonction avant de commencer à essayer de l'utiliser. 311 00:16:43,000 --> 00:16:46,000 Ensuite, si ce initialisé correctement c'est juste envie de dire si malloc 312 00:16:46,000 --> 00:16:50,000 ne pas retourner NULL, alors je peux commencer à mettre certaines propriétés. 313 00:16:50,000 --> 00:16:54,000 >> En JavaScript et PHP nous avions ce mot-clé appelé ce, 314 00:16:54,000 --> 00:16:58,000 et cette référence à l'instance actuelle d'une classe. 315 00:16:58,000 --> 00:17:00,000 En Objective-C, nous appelons cette auto. 316 00:17:00,000 --> 00:17:04,000 Quand je dis self.name, cela signifie que l'objet 317 00:17:04,000 --> 00:17:07,000 Je viens de créer quand j'ai dit alloc étudiant init, 318 00:17:07,000 --> 00:17:09,000 qui va me rendre un objet. 319 00:17:09,000 --> 00:17:12,000 Cela signifie que je veux pour définir le nom de cet objet 320 00:17:12,000 --> 00:17:15,000 à tout ce que je viens de passé po 321 00:17:15,000 --> 00:17:18,000 Tout comme dans C, nous avons accès à des membres de ce point, 322 00:17:18,000 --> 00:17:21,000 si self.name dit le nom de l'objet étudiant 323 00:17:21,000 --> 00:17:24,000 va maintenant être tout ce que vous venez de passer po 324 00:17:24,000 --> 00:17:28,000 Et si finalement, je peux le retourner si je réellement obtenir quelque chose en retour. 325 00:17:28,000 --> 00:17:30,000 >> Des questions? 326 00:17:30,000 --> 00:17:34,000 Ok, donc cette auto = super init, 327 00:17:34,000 --> 00:17:37,000 si vous n'avez pas tout à fait comprendre les choses héritage ne vous inquiétez pas. 328 00:17:37,000 --> 00:17:40,000 Il suffit de savoir que si jamais vous voulez faire votre propre méthode d'initialisation juste 329 00:17:40,000 --> 00:17:42,000 le faire, et vous serez prêt à partir. 330 00:17:42,000 --> 00:17:44,000 Ouais. >> [Étudiants] Que signifie l'auto si? 331 00:17:44,000 --> 00:17:49,000 Cela signifie que lorsque malloc nous quelque chose que nous toujours vérifié si elle était égale à null, 332 00:17:49,000 --> 00:17:51,000 et si elle était nulle, puis nous sommes sortis. 333 00:17:51,000 --> 00:17:55,000 C'est la même chose, parce que si cela retourne null, alors nous allons probablement faute seg 334 00:17:55,000 --> 00:17:57,000 si on commence à essayer de la manipuler. 335 00:17:57,000 --> 00:18:01,000 C'est notre classe étudiant. 336 00:18:01,000 --> 00:18:03,000 Cela signifie que nous pouvons initialiser nos étudiants dans l'une des deux façons. 337 00:18:03,000 --> 00:18:08,000 Si je dis alloc init a étudiante je n'utilise pas cette méthode que je viens d'écrire, 338 00:18:08,000 --> 00:18:11,000 et à la place je peux simplement dire alice.name, 339 00:18:11,000 --> 00:18:14,000 et maintenant je vais mettre ce nom de propriété. 340 00:18:14,000 --> 00:18:17,000 >> De même, si je veux utiliser cette méthode initWithName 341 00:18:17,000 --> 00:18:20,000 Je peux simplement dire alloc, puis plutôt que de dire d'initialisation 342 00:18:20,000 --> 00:18:24,000 Je vais appeler cette méthode que je viens de créer, et je vais passer à Bob. 343 00:18:24,000 --> 00:18:30,000 À ce stade, ce Bob objet a un nom égal à Bob. 344 00:18:30,000 --> 00:18:35,000 Bon, ici j'utilise ce NSMutableArray que nous avons vu précédemment. 345 00:18:35,000 --> 00:18:38,000 Je suis allocation space.Then je l'initialisation d'un nouveau tableau. 346 00:18:38,000 --> 00:18:40,000 Je vais ajouter 2 choses à elle. 347 00:18:40,000 --> 00:18:43,000 Ce tableau contient maintenant des objets d'études. 348 00:18:43,000 --> 00:18:46,000 Notez que nulle part ai-je dû dire que c'est un tableau d'étudiants. 349 00:18:46,000 --> 00:18:48,000 Je l'ai dit, c'est un tableau, période. 350 00:18:48,000 --> 00:18:50,000 Alors je peux mettre ce que l'intérieur de ce que je veux. 351 00:18:50,000 --> 00:18:52,000 Ici, j'ai 2 objets. 352 00:18:52,000 --> 00:18:56,000 >> Enfin, j'ai un autre objet, ici, cette TF. 353 00:18:56,000 --> 00:18:59,000 Ici dans TF.h fondamentalement la même chose. 354 00:18:59,000 --> 00:19:01,000 Je suis héritant de NSObject, et par la manière, 355 00:19:01,000 --> 00:19:03,000 lorsque vous créez des classes tout cela est fait pour vous, 356 00:19:03,000 --> 00:19:06,000 ce genre de passe-partout interface. 357 00:19:06,000 --> 00:19:08,000 Il possède une propriété d'étudiants. 358 00:19:08,000 --> 00:19:15,000 J'ai un couple d'ici méthodes qui ne sont pas vraiment faire grand-chose, 359 00:19:15,000 --> 00:19:18,000 et donc ça veut dire après avoir créé cet objet TF 360 00:19:18,000 --> 00:19:23,000 Je peux appeler cette méthode sur l'année comme ça. 361 00:19:23,000 --> 00:19:26,000 Toute question relative à la syntaxe Objective-C avant de commencer le déplacement en un peu plus 362 00:19:26,000 --> 00:19:30,000 intéressant le développement des trucs applications? 363 00:19:30,000 --> 00:19:34,000 >> Ok, nous allons donc fait faire une application iPhone. 364 00:19:34,000 --> 00:19:39,000 Les classes de base que vous allez utiliser à l'intérieur de votre application iPhone sont appelés contrôleurs de vue, 365 00:19:39,000 --> 00:19:42,000 et un contrôleur de vue représente essentiellement un seul écran 366 00:19:42,000 --> 00:19:46,000 à l'intérieur de votre application, donc si je suis sur l'app musique, par exemple, 367 00:19:46,000 --> 00:19:50,000 un contrôleur de vue pourrait représenter le point de vue où je afficher toutes les chansons sur mon iPhone. 368 00:19:50,000 --> 00:19:53,000 Un autre contrôleur de vue pourrait être quand je clique sur une chanson et de commencer à jouer 369 00:19:53,000 --> 00:19:55,000 ou comme je le forage vers le bas dans les artistes. 370 00:19:55,000 --> 00:19:59,000 Chacun de ces écrans différents peuvent être représentés en tant que contrôleur de vue différent, 371 00:19:59,000 --> 00:20:04,000 et un contrôleur de vue est vraiment juste une classe qui explique comment fonctionne cet écran. 372 00:20:04,000 --> 00:20:07,000 Choses à l'intérieur d'un contrôleur de vue, nous allons avoir des propriétés, 373 00:20:07,000 --> 00:20:10,000 tant de choses comme un bouton va être une propriété de notre contrôleur de vue. 374 00:20:10,000 --> 00:20:13,000 >> Nous allons aussi avoir des méthodes, et ce sont essentiellement des gestionnaires d'événements. 375 00:20:13,000 --> 00:20:16,000 Cette méthode indique lorsque vous appuyez sur ce bouton 376 00:20:16,000 --> 00:20:19,000 Je veux faire quelque chose, et enfin, à nouveau, 377 00:20:19,000 --> 00:20:24,000 nous allons utiliser ce mot-clé auto pour accéder à l'instance actuelle. 378 00:20:24,000 --> 00:20:29,000 Pour construire des interfaces dans iOS est en fait vraiment, vraiment facile. 379 00:20:29,000 --> 00:20:32,000 Ils ont cette traînée agréable et drop interface appelée Interface Builder, 380 00:20:32,000 --> 00:20:37,000 et les 2 concepts de base que le fil de votre Objective-C à Interface Builder 381 00:20:37,000 --> 00:20:40,000 sont IBOutlet et IBAction. 382 00:20:40,000 --> 00:20:44,000 Un IBOutlet dit simplement que si vous déclarez une propriété qui est un bouton, 383 00:20:44,000 --> 00:20:47,000 et que vous voulez le brancher à quelque chose dans votre interface réelle, 384 00:20:47,000 --> 00:20:49,000 vous allez dire que c'est une prise de courant. 385 00:20:49,000 --> 00:20:51,000 De même, si vous voulez représenter un gestionnaire d'événements 386 00:20:51,000 --> 00:20:54,000 alors vous allez dire que c'est une action. 387 00:20:54,000 --> 00:20:57,000 >> Pour câbler réellement cette représentation graphique 388 00:20:57,000 --> 00:21:00,000 et votre code, il est vraiment, vraiment simple. 389 00:21:00,000 --> 00:21:03,000 Si vous souhaitez joindre un IBOutlet, tout ce que vous avez à faire est de contrôler clic, 390 00:21:03,000 --> 00:21:05,000 et nous allons voir un exemple de ce très rapide. 391 00:21:05,000 --> 00:21:07,000 Vous contrôlez cliquez là où il est dit View Controller. 392 00:21:07,000 --> 00:21:09,000 Vous allez glisser dans l'interface, ou inversement, 393 00:21:09,000 --> 00:21:13,000 si vous voulez brancher un gestionnaire d'événements que vous allez glisser à partir de l'interface 394 00:21:13,000 --> 00:21:15,000 dans l'autre sens. 395 00:21:15,000 --> 00:21:20,000 Jetons un coup d'oeil à un exemple très simple iOS. 396 00:21:20,000 --> 00:21:23,000 >> Nous allons créer un nouveau projet. 397 00:21:23,000 --> 00:21:25,000 Je vais venir ici à la demande, 398 00:21:25,000 --> 00:21:28,000 et je vais cliquez sur Application Vue simple. 399 00:21:28,000 --> 00:21:31,000 Je vais cliquer sur suivant. Je vais vous donner mon projet un nom. 400 00:21:31,000 --> 00:21:33,000 Je vais l'appeler Bonjour. 401 00:21:33,000 --> 00:21:36,000 Fait intéressant, Apple n'assume vous créez un produit 402 00:21:36,000 --> 00:21:38,000 de sorte que vous pouvez le vendre et ils peuvent gagner de l'argent. 403 00:21:38,000 --> 00:21:41,000 Ici-bas, je vais dire que c'est une application iPhone. 404 00:21:41,000 --> 00:21:44,000 Vous pouvez créer une application iPad, ou si vous souhaitez en créer un de ces applications 405 00:21:44,000 --> 00:21:47,000 qui prend en charge les périphériques que vous pouvez faire cela aussi. 406 00:21:47,000 --> 00:21:49,000 Ce sont ce que vous voulez que vos coches ressembler. 407 00:21:49,000 --> 00:21:51,000 >> Vous souhaitez utiliser des storyboards, que nous verrons plus tard, 408 00:21:51,000 --> 00:21:54,000 et vous voulez absolument utiliser le comptage automatique de la référence, 409 00:21:54,000 --> 00:21:58,000 qui est une fonctionnalité intéressante qui vous évite d'avoir à dire malloc et free. 410 00:21:58,000 --> 00:22:03,000 Sauf si vous voulez appeler malloc et free, je quitterais ce cochée. 411 00:22:03,000 --> 00:22:07,000 Je vais cliquer sur suivant, et enfin, cela va me demander où je veux l'enregistrer. 412 00:22:07,000 --> 00:22:14,000 Je vais frapper créer, et c'est parti. 413 00:22:14,000 --> 00:22:16,000 J'ai créé un nouveau projet. 414 00:22:16,000 --> 00:22:19,000 Ici à gauche sont tous les fichiers qui sont à l'intérieur de mon projet, 415 00:22:19,000 --> 00:22:22,000 et remarquez que j'ai eu tout un tas, et je n'ai même pas faire quoi que ce soit. 416 00:22:22,000 --> 00:22:24,000 IOS est grande. 417 00:22:24,000 --> 00:22:27,000 >> Par exemple, voici ce ViewController.h, 418 00:22:27,000 --> 00:22:30,000 cela va représenter mon contrôleur première vue, 419 00:22:30,000 --> 00:22:32,000 de sorte que le premier écran à l'intérieur de mon application. 420 00:22:32,000 --> 00:22:34,000 Maintenant, nous savons ce que cela veut dire. 421 00:22:34,000 --> 00:22:36,000 Nous disons que j'appelle cette ViewController classe, 422 00:22:36,000 --> 00:22:40,000 et un ViewController fait tout ce que fait un UIViewController, 423 00:22:40,000 --> 00:22:43,000 et ce, encore une fois, c'est une classe qui a écrit d'Apple qui fait beaucoup de choses à portée de main pour nous 424 00:22:43,000 --> 00:22:46,000 telles que l'affichage de l'écran. 425 00:22:46,000 --> 00:22:50,000 C'est là où je peux réellement commencer à définir ce que mon contrôleur de vue le fait, 426 00:22:50,000 --> 00:22:52,000 et il s'avère que je n'ai vraiment pas besoin de tout cela. 427 00:22:52,000 --> 00:22:55,000 Ceci est du code passe-partout que Apple me donne gratuitement. 428 00:22:55,000 --> 00:22:59,000 J'ai besoin de cette première ligne, ou je n'ai pas une classe, 429 00:22:59,000 --> 00:23:02,000 de sorte que nous pouvons nous débarrasser de cela et se débarrasser de ce. 430 00:23:02,000 --> 00:23:05,000 Bon, c'est mon écran vide. 431 00:23:05,000 --> 00:23:08,000 >> Maintenant, nous allons cliquer sur ce MainStoryboard.storyboard, 432 00:23:08,000 --> 00:23:11,000 et c'est là que ça commence à devenir intéressant. 433 00:23:11,000 --> 00:23:14,000 Ceci représente le premier écran sur mon application. 434 00:23:14,000 --> 00:23:17,000 Si je veux ajouter un bouton, en HTML, j'ai dû créer une balise button. 435 00:23:17,000 --> 00:23:20,000 Dans Android, vous devez créer une balise button, 436 00:23:20,000 --> 00:23:23,000 mais dans iOS si je viens ici en bas à droite 437 00:23:23,000 --> 00:23:27,000 et si je clique sur ce 3ème est ici où il est dit Objets, 438 00:23:27,000 --> 00:23:31,000 et je peux faire défiler vers le bas, ou je peux commencer à chercher bouton. 439 00:23:31,000 --> 00:23:35,000 Et regardez, un bouton, donc si je fait glisser et déposer ce droit là-bas, 440 00:23:35,000 --> 00:23:38,000 Je viens d'ajouter un bouton à l'écran sur mon application. 441 00:23:38,000 --> 00:23:41,000 Si je veux changer le texte, je ne peux double-cliquez dessus, 442 00:23:41,000 --> 00:23:47,000 dire quelque chose comme incitant «Moi Appuyez sur." 443 00:23:47,000 --> 00:23:51,000 Bon, maintenant, si je lance cette application, nous avons donc compiler, 444 00:23:51,000 --> 00:23:54,000 afin de l'exécuter je clique sur le bouton de lecture dans le coin supérieur gauche, et il ya mon application. 445 00:23:54,000 --> 00:23:58,000 Je n'ai rien fait, et j'ai eu une application iPhone douce à la recherche. 446 00:23:58,000 --> 00:24:01,000 Si je veux l'arrêter, vous pouvez cliquer sur le bouton d'arrêt 447 00:24:01,000 --> 00:24:03,000 parce que c'est plus amusant. 448 00:24:03,000 --> 00:24:07,000 >> Disons que je veux vraiment quelque chose se passe lorsque j'appuie sur ce bouton. 449 00:24:07,000 --> 00:24:09,000 Pour ce faire, ce que je dois faire, c'est que je dois créer 450 00:24:09,000 --> 00:24:13,000 un nouveau gestionnaire d'événement ou d'une action. 451 00:24:13,000 --> 00:24:16,000 Cela signifie que j'ai besoin de créer une méthode que je veux être appelé 452 00:24:16,000 --> 00:24:18,000 lorsque j'appuie sur le bouton, nous allons donc créer une nouvelle méthode. 453 00:24:18,000 --> 00:24:20,000 Je suis à l'intérieur de ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Je dois dire qu'il existe une méthode. 455 00:24:22,000 --> 00:24:26,000 J'ai besoin d'un trait d'union abord parce que je vais être appelé cette vue sur le contrôleur. 456 00:24:26,000 --> 00:24:28,000 J'ai besoin de donner ce type. 457 00:24:28,000 --> 00:24:31,000 Le type de ce qui se passe à cette chose IBAction que nous avons vu précédemment. 458 00:24:31,000 --> 00:24:35,000 Il s'agit d'un gestionnaire d'événements, de sorte qu'il va y retourner un IBAction, 459 00:24:35,000 --> 00:24:38,000 et c'est une indication pour XCode pour dire que 460 00:24:38,000 --> 00:24:40,000 c'est quelque chose que je veux quelque chose à câbler. 461 00:24:40,000 --> 00:24:45,000 Je peux lui donner un nom, comme buttonPressed, point-virgule. 462 00:24:45,000 --> 00:24:48,000 >> Maintenant, j'ai déclaré une méthode nouvelle à l'intérieur de ma classe. 463 00:24:48,000 --> 00:24:50,000 Je l'ai dit cette méthode doit exister. 464 00:24:50,000 --> 00:24:53,000 Maintenant, nous allons entrer en ViewController.m, 465 00:24:53,000 --> 00:24:56,000 et disons ce que cette méthode peut faire. 466 00:24:56,000 --> 00:25:03,000 Si je commence à taper, par exemple, (void) buttonPressed 467 00:25:03,000 --> 00:25:06,000 préavis XCode est vraiment sympa et autocompletes pour moi. 468 00:25:06,000 --> 00:25:09,000 C'est vraiment merveilleux. 469 00:25:09,000 --> 00:25:12,000 Notez ici que l'intérieur du fichier. M Je peux aussi dire nulle, 470 00:25:12,000 --> 00:25:15,000 et c'est parce que IBAction n'est pas réellement un type. 471 00:25:15,000 --> 00:25:19,000 Il s'agit en fait hashtag défini quelque part pour être un vide, 472 00:25:19,000 --> 00:25:22,000 et encore une fois, c'est juste une indication pour XCode qui dit 473 00:25:22,000 --> 00:25:25,000 Je veux que ce soit un gestionnaire d'événements, et nous verrons pourquoi dans un instant. 474 00:25:25,000 --> 00:25:28,000 Lorsque ce bouton est pressé, je vais faire quelque chose de gênant 475 00:25:28,000 --> 00:25:30,000 comme afficher un popup. 476 00:25:30,000 --> 00:25:35,000 >> Pour ce faire, je peux créer une nouvelle instance de cette classe appelée UIAlertView, 477 00:25:35,000 --> 00:25:39,000 et c'est une classe qui a écrit d'Apple qui va afficher les popups ennuyants. 478 00:25:39,000 --> 00:25:43,000 Nous appellerons cette alerte pop-up, et j'ai 2 étapes, rappelez-vous, à la création de cet objet. 479 00:25:43,000 --> 00:25:46,000 La première chose que je dois faire est d'allouer l'espace. 480 00:25:46,000 --> 00:25:48,000 Je veux un UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Je tiens à allouer de l'espace. C'est ma première méthode. 482 00:25:51,000 --> 00:25:53,000 Ma méthode suivante est que je veux pour l'initialiser, 483 00:25:53,000 --> 00:25:58,000 et je n'ai donc ce gros méthode longtemps appelé initWithTitle. 484 00:25:58,000 --> 00:26:01,000 C'est essentiellement ce qui va contrôler ce popup dit. 485 00:26:01,000 --> 00:26:04,000 Le titre de mon popup peut être bonjour. 486 00:26:04,000 --> 00:26:08,000 Le message de cette même fenêtre peut être "C'est iOS." 487 00:26:08,000 --> 00:26:10,000 Délégué chose, je ne sais pas ce que c'est. 488 00:26:10,000 --> 00:26:13,000 Disons que ce n'est rien. 489 00:26:13,000 --> 00:26:18,000 Maintenant, le bouton qui va apparaître pouvez dire quelque chose comme «C'est sûr», 490 00:26:18,000 --> 00:26:24,000 et je ne veux pas vraiment les autres boutons, nous allons donc supprimer cela et fermer la parenthèse. 491 00:26:24,000 --> 00:26:27,000 >> Bon, j'ai créé un supplémentaire. Nous y voilà. 492 00:26:27,000 --> 00:26:30,000 C'est comment je peux créer une nouvelle fenêtre,. 493 00:26:30,000 --> 00:26:35,000 Si je veux vraiment montrer la popup je veux appeler la méthode show. 494 00:26:35,000 --> 00:26:38,000 Pour ce faire, je peux dire d'alerte et de montrer, 495 00:26:38,000 --> 00:26:40,000 et encore une fois, saisie semi-automatique était super gentil. 496 00:26:40,000 --> 00:26:42,000 Si j'ai oublié ce que c'était, si je viens de tapé dans s, 497 00:26:42,000 --> 00:26:45,000 Je peux faire défiler ici pour comprendre de quoi il s'agissait, 498 00:26:45,000 --> 00:26:48,000 et il filtre bien. 499 00:26:48,000 --> 00:26:52,000 Maintenant, j'ai créé cette nouvelle fenêtre,. 500 00:26:52,000 --> 00:26:55,000 Nous allons revenir sur ce que signifie délégué tard, 501 00:26:55,000 --> 00:26:58,000 et maintenant, je veux dire que je veux que cette méthode soit tiré 502 00:26:58,000 --> 00:27:01,000 lorsque j'appuie sur le bouton, je vais revenir à mon storyboard, 503 00:27:01,000 --> 00:27:04,000 et je veux maintenant joindre ce IBAction. 504 00:27:04,000 --> 00:27:06,000 La première chose que vous voulez faire est de cliquer sur le bouton. 505 00:27:06,000 --> 00:27:08,000 Lorsque j'appuie sur ce bouton je veux quelque chose se produise. 506 00:27:08,000 --> 00:27:10,000 Je ne vais pas maintenez la touche Ctrl. 507 00:27:10,000 --> 00:27:13,000 Je vais cliquer et faire glisser à partir du bouton 508 00:27:13,000 --> 00:27:15,000 d'ici où il est dit View Controller. 509 00:27:15,000 --> 00:27:17,000 Nous pouvons voir qu'il éclaire bien en place. 510 00:27:17,000 --> 00:27:22,000 >> Si je laisse aller avec ma souris j'ai maintenant cette même fenêtre, là-bas où j'ai quelques options. 511 00:27:22,000 --> 00:27:24,000 L'une d'elles est les événements que je peux enregistrer. 512 00:27:24,000 --> 00:27:28,000 Ce sont toutes ces méthodes que j'ai déclaré dans mon dossier que IBActions h. 513 00:27:28,000 --> 00:27:31,000 C'est ainsi que XCode sait ce qui doit apparaître dans cette petite liste, 514 00:27:31,000 --> 00:27:33,000 donc c'est juste un soupçon. 515 00:27:33,000 --> 00:27:37,000 Si je clique sur le bouton pressé, j'ai maintenant enregistré le gestionnaire d'événements. 516 00:27:37,000 --> 00:27:41,000 En JavaScript, nous avons dû dire que j'ai un peu de code qui a enregistré le gestionnaire d'événements. 517 00:27:41,000 --> 00:27:43,000 En Objective-C, il est vraiment facile. 518 00:27:43,000 --> 00:27:46,000 Si je lance ce nouveau 519 00:27:46,000 --> 00:27:49,000 maintenant, quand j'appuie sur le bouton mon gestionnaire d'événements va tirer, 520 00:27:49,000 --> 00:27:51,000 et je vais obtenir cette fenêtre. 521 00:27:51,000 --> 00:27:54,000 Super, super simple là-bas. 522 00:27:54,000 --> 00:27:57,000 >> Si jamais vous voulez voir tous les événements qui se produisent à l'enregistrement 523 00:27:57,000 --> 00:28:00,000 sur un composant si je clique sur ce bouton 524 00:28:00,000 --> 00:28:02,000 et je viens ici pour le côté droit 525 00:28:02,000 --> 00:28:05,000 première fois que vous pouvez voir ici que je peux faire des choses comme le type du bouton, 526 00:28:05,000 --> 00:28:08,000 donc si vous voulez un de ceux de I ou sur le bouton Ajouter un contact 527 00:28:08,000 --> 00:28:10,000 ou autre chose. 528 00:28:10,000 --> 00:28:13,000 Si je veux voir tous les événements qui sont sur ce bouton 529 00:28:13,000 --> 00:28:16,000 si je fait tout ce chemin là-bas sur le côté droit 530 00:28:16,000 --> 00:28:19,000 nous pouvons voir ici les événements que j'ai tous ces différents événements. 531 00:28:19,000 --> 00:28:23,000 Je peux appuyer sur le bouton, quand je lâche le bouton, lorsque je double robinet ou que ce soit, 532 00:28:23,000 --> 00:28:26,000 et celle que je viens de m'inscrire cet événement est appelé Touch Up Inside, 533 00:28:26,000 --> 00:28:29,000 et cela explique que dès que mon doigt se détache sur le bouton 534 00:28:29,000 --> 00:28:32,000 cet événement se passe au feu, et c'est exactement ce qui s'est passé. 535 00:28:32,000 --> 00:28:36,000 C'est le genre de l'événement par défaut du bouton pressé. 536 00:28:36,000 --> 00:28:39,000 >> Toutes les questions jusqu'ici? 537 00:28:39,000 --> 00:28:43,000 Bon, c'est comme ça que nous pouvons commencer à câbler les choses dans notre code 538 00:28:43,000 --> 00:28:46,000 dans les choses à l'intérieur de notre interface. 539 00:28:46,000 --> 00:28:49,000 Rappelez-vous la première chose que nous avions à faire était de trouver le code, 540 00:28:49,000 --> 00:28:54,000 puis on câblé jusqu'à l'interface avec le code, 541 00:28:54,000 --> 00:28:57,000 et il ya notre première application. 542 00:28:57,000 --> 00:29:00,000 Ok, c'était vraiment cool, et nous avons créé ce bouton. 543 00:29:00,000 --> 00:29:03,000 Que faire si nous ne voulons pas avoir à créer un groupe de propriétés 544 00:29:03,000 --> 00:29:05,000 représentant ces boutons? 545 00:29:05,000 --> 00:29:08,000 Par exemple, dans Tic Tac Toe j'ai 9 boutons, 546 00:29:08,000 --> 00:29:11,000 et ce serait super, super-ennuyeux d'avoir à faire glisser et déposer 9 fois 547 00:29:11,000 --> 00:29:14,000 ou si je devais faire Tic Tac Toe avec 81 au lieu de 9 548 00:29:14,000 --> 00:29:17,000 et j'ai dû glisser et déposer 81 fois, et c'est boiteux. 549 00:29:17,000 --> 00:29:20,000 Ce que nous pouvons faire, c'est un peu comme une page HTML 550 00:29:20,000 --> 00:29:23,000 quand nous avons eu des choses comme ID et les noms et nous pouvons chercher des choses 551 00:29:23,000 --> 00:29:27,000 par leur ID, il ya une notion similaire dans iOS appelées balises. 552 00:29:27,000 --> 00:29:31,000 >> Un tag est simplement un identifiant numérique unique pour un composant. 553 00:29:31,000 --> 00:29:34,000 Si je dis cela a un tag de 0, par exemple, 554 00:29:34,000 --> 00:29:38,000 si je crée un bouton et lui donner une étiquette de 0, et nous verrons comment faire cela en seulement une seconde, 555 00:29:38,000 --> 00:29:41,000 si je veux obtenir ce bouton je peux simplement dire que je veux appeler 556 00:29:41,000 --> 00:29:45,000 l', viewWithTag méthode sur l'objet ici 557 00:29:45,000 --> 00:29:48,000 l'self.vue, qui représente l'écran en cours, par exemple. 558 00:29:48,000 --> 00:29:53,000 Si j'appelle cette méthode viewWithTag, je vais retirer le bouton avec l'étiquette 0. 559 00:29:53,000 --> 00:29:58,000 Jetons un coup d'oeil à ce bâtiment par Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 Tout d'abord, c'est mon storyboard. 561 00:30:01,000 --> 00:30:05,000 J'ai créé ces 10 boutons d'interface utilisateur. 562 00:30:05,000 --> 00:30:07,000 Notez qu'ils sont tous de la même taille. 563 00:30:07,000 --> 00:30:11,000 Si je clique sur l'un de ceux-ci et je reviens ici sur ce côté droit 564 00:30:11,000 --> 00:30:15,000 vous verrez que je réglé la police ici, alors j'ai fait la police un peu plus grand, 565 00:30:15,000 --> 00:30:19,000 mais ce que j'ai fait aussi étais-je mettre cette balise. 566 00:30:19,000 --> 00:30:23,000 J'ai dit que cela a une balise de 1, ce qui est en haut à gauche. 567 00:30:23,000 --> 00:30:26,000 >> Maintenant, si je clique sur un autre bouton, comme celui-ci seconde ici, 568 00:30:26,000 --> 00:30:29,000 maintenant, vous verrez que mon tag est 2. 569 00:30:29,000 --> 00:30:32,000 Chacun de ces boutons est juste une étiquette unique, 570 00:30:32,000 --> 00:30:35,000 et si ce n'est plus tard comment je vais commencer à interagir 571 00:30:35,000 --> 00:30:38,000 avec mon application. 572 00:30:38,000 --> 00:30:40,000 C'est tout à l'intérieur d'un contrôleur de vue, 573 00:30:40,000 --> 00:30:42,000 mais voici ce que nous avons. 574 00:30:42,000 --> 00:30:44,000 Nous avons 3 propriétés ici. 575 00:30:44,000 --> 00:30:49,000 La première et la dernière vont représenter l'état de mon bord. 576 00:30:49,000 --> 00:30:53,000 Fondamentalement, ce premier est un tableau représentant où le X et S sont. 577 00:30:53,000 --> 00:30:57,000 Cet autre nous dit ici dont c'est le tour. 578 00:30:57,000 --> 00:31:01,000 Vous remarquerez que j'ai aussi ces choses ici. 579 00:31:01,000 --> 00:31:05,000 Avant, quand nous avons déclaré propriétés nous leur avons donné un nom et un type. 580 00:31:05,000 --> 00:31:08,000 On peut aussi leur donner quelques informations supplémentaires ici. 581 00:31:08,000 --> 00:31:11,000 Ce premier dit non atomique, et ce que cela dit 582 00:31:11,000 --> 00:31:16,000 est essentiellement une seule chose ne sera jamais essayer d'accéder à cette variable à la fois. 583 00:31:16,000 --> 00:31:19,000 Vous pourriez faire des applications plus complexes qui sont multi-thread, 584 00:31:19,000 --> 00:31:22,000 et ainsi de retour dans Scratch nous avons eu des threads différents, 585 00:31:22,000 --> 00:31:25,000 et les sprites différents pourraient faire des choses différentes en même temps. 586 00:31:25,000 --> 00:31:29,000 >> Si ce n'est pas le cas, ce qui n'est pas quelque chose que nous allons examiner, 587 00:31:29,000 --> 00:31:33,000 si nous disons non atomique il va vraiment rendre les choses un peu plus vite. 588 00:31:33,000 --> 00:31:37,000 Nous avons également cette chose appelée assign, forte ou faible. 589 00:31:37,000 --> 00:31:40,000 Cette attribuer dit juste que c'est un type standard. 590 00:31:40,000 --> 00:31:43,000 Ce n'est pas un objet ou un pointeur parce que c'est juste un bool, 591 00:31:43,000 --> 00:31:46,000 si bool est intégré à l'Objective-C. 592 00:31:46,000 --> 00:31:49,000 Ceci dit ne pas essayer de faire quelque chose de compliqué avec des pointeurs ici. 593 00:31:49,000 --> 00:31:51,000 Il s'agit d'une mise à l'échelle régulier vieux. 594 00:31:51,000 --> 00:31:54,000 Forts et les faibles, cette faiblesse dit que fait 595 00:31:54,000 --> 00:31:57,000 Je veux que ce soit en montrant quelque chose dans le contrôleur de vue. 596 00:31:57,000 --> 00:32:00,000 Je ne vais pas réellement affecter ou init a moi-même. 597 00:32:00,000 --> 00:32:04,000 Le constructeur d'interface, quand je lance l'application, va gérer tout ce que l'initialisation. 598 00:32:04,000 --> 00:32:07,000 Si je dis faible, qui dit que quelqu'un d'autre va être la création de ce. 599 00:32:07,000 --> 00:32:09,000 Si je dis forte, cela dit que je vais être le seul 600 00:32:09,000 --> 00:32:12,000 qui est la création de cet objet conseil d'administration, 601 00:32:12,000 --> 00:32:14,000 et si j'ai ici quelques méthodes plus ici, 602 00:32:14,000 --> 00:32:18,000 par exemple, une action lorsque le bouton est pressé nouveau jeu, 603 00:32:18,000 --> 00:32:20,000 une action lorsque l'une des autres touches sont pressées, 604 00:32:20,000 --> 00:32:23,000 et cetera. 605 00:32:23,000 --> 00:32:26,000 >> Nous n'allons pas entrer dans trop de la logique de Tic Tac Toe, 606 00:32:26,000 --> 00:32:30,000 même si c'est très excitant, mais nous allons jeter un coup d'oeil à 607 00:32:30,000 --> 00:32:33,000 quelques-unes des choses que nous pouvons faire à l'intérieur de l'iOS. 608 00:32:33,000 --> 00:32:35,000 Cette méthode nouveau jeu va être tiré 609 00:32:35,000 --> 00:32:37,000 chaque fois que j'appuie sur le bouton nouvelle partie. 610 00:32:37,000 --> 00:32:41,000 Pour accrocher jusqu'à ce que j'ai tout simplement venir à mon storyboard. 611 00:32:41,000 --> 00:32:43,000 J'ai cliqué sur le jeu de nouveau. 612 00:32:43,000 --> 00:32:47,000 Si je viens ici vers la droite je vois que 613 00:32:47,000 --> 00:32:50,000 Touch Up Inside est câblé à la méthode NewGame. 614 00:32:50,000 --> 00:32:53,000 C'est pourquoi ce qui se passe à faire virer. 615 00:32:53,000 --> 00:32:56,000 La méthode NewGame va faire un peu de mise en place. 616 00:32:56,000 --> 00:32:59,000 Il va dire que je veux que vous pour effacer l'état de la carte. 617 00:32:59,000 --> 00:33:01,000 Il s'agit d'une bonne méthode de mutables tableaux. 618 00:33:01,000 --> 00:33:03,000 Cela va dire que c'est maintenant au tour de X, 619 00:33:03,000 --> 00:33:07,000 et maintenant je vais profiter de cette chose viewWithTag. 620 00:33:07,000 --> 00:33:11,000 >> Je sais que mes boutons ont des étiquettes 1-9, 621 00:33:11,000 --> 00:33:13,000 et c'est quelque chose que je arbitrairement choisi. 622 00:33:13,000 --> 00:33:15,000 Si je veux mettre le texte de chaque bouton pour être vide 623 00:33:15,000 --> 00:33:17,000 parce que je viens de commencer un nouveau jeu et je ne veux pas 624 00:33:17,000 --> 00:33:20,000 Xs ou Os pour être laissé sur ce que je peux faire. 625 00:33:20,000 --> 00:33:24,000 Je peux dire que je veux la vue avec la balise, 1, 2, 3, 4, et cetera. 626 00:33:24,000 --> 00:33:27,000 Cela tirera une touche différente à chaque fois. 627 00:33:27,000 --> 00:33:30,000 Ici, je vais le jeter aux UIButton. 628 00:33:30,000 --> 00:33:33,000 Tout comme nous avons pu jeter ints à des flotteurs et vice-versa 629 00:33:33,000 --> 00:33:37,000 cela dit que je veux lancer ce à un UIButton. 630 00:33:37,000 --> 00:33:40,000 Cela signifie que le type de ce sera un * UIButton 631 00:33:40,000 --> 00:33:43,000 en raison des pointeurs, mais ne vous inquiétez pas, ils ne sont pas plus effrayant. 632 00:33:43,000 --> 00:33:47,000 >> Une fois que j'ai ce bouton, je vais appeler une méthode sur elle. 633 00:33:47,000 --> 00:33:50,000 Cette méthode est appelée setTitle pourState, et si cela en dit 634 00:33:50,000 --> 00:33:53,000 Je veux mettre le texte du bouton pour être la chaîne vide, 635 00:33:53,000 --> 00:33:57,000 et je veux que ce soit la chaîne vide quand il n'est pas pressé. 636 00:33:57,000 --> 00:34:01,000 Si j'utilise cette méthode, je peux changer le texte du bouton 637 00:34:01,000 --> 00:34:04,000 dès que quelqu'un le frappe, mais nous voulons dire lorsque le bouton est juste assis là 638 00:34:04,000 --> 00:34:07,000 Je veux que le texte soit vide. 639 00:34:07,000 --> 00:34:10,000 Enfin, nous allons initialiser mon conseil, 640 00:34:10,000 --> 00:34:12,000 et je vais dire que tout est actuellement à 0, 641 00:34:12,000 --> 00:34:15,000 si les membres du conseil de cette immuable est un tableau modifiable, 642 00:34:15,000 --> 00:34:21,000 ce qui signifie que je peux appeler la méthode addObject et juste un intérieur 0 de celui-ci. 643 00:34:21,000 --> 00:34:23,000 C'est ce qui arrive lorsque je crée une nouvelle partie. 644 00:34:23,000 --> 00:34:25,000 >> Jetons un coup d'oeil à un autre. 645 00:34:25,000 --> 00:34:28,000 Cette méthode ici est le IBAction qui va être pressé 646 00:34:28,000 --> 00:34:31,000 chaque fois que l'un de ces carrés est pressée. 647 00:34:31,000 --> 00:34:33,000 Maintenant, nous avons une certaine logique Tic Tac Toe ici. 648 00:34:33,000 --> 00:34:36,000 Nous trouver dont c'est le tour, 649 00:34:36,000 --> 00:34:39,000 et sur cette base nous soit mis un X ou un O, 650 00:34:39,000 --> 00:34:43,000 mais nous remarquons que nous sommes réutiliser ce même gestionnaire d'événements 651 00:34:43,000 --> 00:34:45,000 pour chacun de ces boutons. 652 00:34:45,000 --> 00:34:49,000 Cela signifie que je n'ai pas une méthode pour le bouton en haut à gauche, 653 00:34:49,000 --> 00:34:52,000 une méthode différente pour le bouton en bas à droite, même si je pouvais avoir fait cela. 654 00:34:52,000 --> 00:34:54,000 Cela ne serait pas vraiment une bonne conception. 655 00:34:54,000 --> 00:34:57,000 Qu'est-ce que je fais ici, c'est que je vais en fait de déterminer 656 00:34:57,000 --> 00:35:00,000 ce que l'étiquette de la touche qui a été pressée est. 657 00:35:00,000 --> 00:35:04,000 Vous remarquerez que cette méthode de lecture prend un argument. 658 00:35:04,000 --> 00:35:07,000 C'est ce qu'on appelle l'expéditeur, et ce qui est l'expéditeur est l'expéditeur va 659 00:35:07,000 --> 00:35:10,000 représentent exactement ce qui a été pris des mesures sur. 660 00:35:10,000 --> 00:35:15,000 Si j'appuie sur un bouton, cet expéditeur sera que UIButton 661 00:35:15,000 --> 00:35:18,000 que j'ai vraiment pressé, ce qui signifie que cette UIButton 662 00:35:18,000 --> 00:35:20,000 porte une étiquette parce que je créé un raccourci. 663 00:35:20,000 --> 00:35:23,000 >> Si je veux obtenir à la balise Je peux simplement dire 664 00:35:23,000 --> 00:35:26,000 Je veux l'étiquette de l'expéditeur, 665 00:35:26,000 --> 00:35:28,000 et encore une fois, je viens de coulée à un UIButton. 666 00:35:28,000 --> 00:35:32,000 Je sais que l'expéditeur sera un UIButton. 667 00:35:32,000 --> 00:35:34,000 Il n'est pas toujours besoin d'être un UIButton. 668 00:35:34,000 --> 00:35:36,000 Je pourrais, par exemple, inscrire le gestionnaire d'événement 669 00:35:36,000 --> 00:35:38,000  pour une pour une touche, une pour un curseur. 670 00:35:38,000 --> 00:35:40,000 Dans ce cas, je sais qu'ils sont tous les boutons, donc je vais dire 671 00:35:40,000 --> 00:35:43,000 Je veux que ce soit un bouton, et puis je peux obtenir le tag, 672 00:35:43,000 --> 00:35:48,000 et à partir de la balise Je sais maintenant où je suis à l'intérieur de la carte. 673 00:35:48,000 --> 00:35:51,000 Ensuite, je peux simplement mettre X ou O, peuvent retourner la tour, 674 00:35:51,000 --> 00:35:54,000 vérifier qui a gagné, et cetera. 675 00:35:54,000 --> 00:35:59,000 >> Toute question concernant cette mesure? 676 00:35:59,000 --> 00:36:02,000 Ok, tout le code, nous avons affiché en ligne, nous ne voulons pas entrer dans trop de 677 00:36:02,000 --> 00:36:06,000 de la logique de Tic Tac Toe, mais maintenant vous pouvez constater que 678 00:36:06,000 --> 00:36:09,000 tout ce que nous faisons, c'est que nous sommes une boucle sur ce tableau, 679 00:36:09,000 --> 00:36:13,000 Nous avons donc un couple de boucles pour ici, et nous ne faisons que comparer à voir 680 00:36:13,000 --> 00:36:18,000 avons-nous un match dans toutes les lignes, un match dans une colonne ou quelque chose comme ça. 681 00:36:18,000 --> 00:36:21,000 Pour réellement exécuter cette application, si je tape sur un de ces boutons 682 00:36:21,000 --> 00:36:24,000 que méthode de lecture a été congédié, ce qui signifie que je viens de mettre 683 00:36:24,000 --> 00:36:31,000 le bouton pour être un X, alors maintenant ce bouton sera un O, et ainsi de suite, 684 00:36:31,000 --> 00:36:35,000 et c'est comme ça que nous commençons à interagir avec cette application seule page. 685 00:36:35,000 --> 00:36:38,000 >> Nous allons afficher le code, alors n'hésitez pas à prendre connaissance de ce que, 686 00:36:38,000 --> 00:36:43,000 mais nous allons maintenant parler de certaines applications qui ne sont plus d'une page. 687 00:36:43,000 --> 00:36:47,000 Aussi excitant que Tic Tac Toe est, beaucoup d'applications à l'intérieur de l'iOS 688 00:36:47,000 --> 00:36:50,000 sont des sortes de ces drill down choses avec plusieurs écrans. 689 00:36:50,000 --> 00:36:54,000 Le premier concept que nous aurons besoin de parler sont des protocoles, 690 00:36:54,000 --> 00:36:57,000 et un protocole est tout simplement un ensemble de méthodes 691 00:36:57,000 --> 00:36:59,000 que vous pouvez promettre à définir. 692 00:36:59,000 --> 00:37:02,000 Si je crée ce nouveau protocole avec 2 méthodes, cette première, 693 00:37:02,000 --> 00:37:05,000 si le type de retour est void, je l'ai appelé foo. 694 00:37:05,000 --> 00:37:07,000 Il ne prend aucun argument. J'ai une autre méthode. 695 00:37:07,000 --> 00:37:11,000 Elle retourne un int. Je l'ai appelé barrer, et il prend un argument. 696 00:37:11,000 --> 00:37:14,000 Tout ce protocole est que l'on appelle SomeProtocol ici, 697 00:37:14,000 --> 00:37:19,000 C'est un ensemble de choses que quelqu'un peut mettre en œuvre. 698 00:37:19,000 --> 00:37:22,000 Je n'ai pas à l'intérieur de ce protocole dit ce truc fait. 699 00:37:22,000 --> 00:37:26,000 Au lieu de cela, je dis juste que vous pouvez définir foo si vous voulez. 700 00:37:26,000 --> 00:37:30,000 Si je crée un contrôleur de vue ou la création d'une classe 701 00:37:30,000 --> 00:37:33,000 Je peux l'intérieur de cette promesse classe pour implémenter 702 00:37:33,000 --> 00:37:40,000 certaines de ces méthodes, ainsi par exemple, si par exemple 703 00:37:40,000 --> 00:37:43,000 cela dit maintenant je fais une promesse que l'intérieur 704 00:37:43,000 --> 00:37:50,000 de cette classe contrôleur de vue je vais avoir des définitions pour les deux foo et bar. 705 00:37:50,000 --> 00:37:52,000 >> Pourquoi est-ce utile? 706 00:37:52,000 --> 00:37:55,000 Un grand nombre de composants à l'intérieur de l'iOS profiter de cette 707 00:37:55,000 --> 00:37:58,000 modèle de conception appelé délégation, et ce que dit la délégation 708 00:37:58,000 --> 00:38:01,000 c'est que, par exemple, si j'ai une zone de texte 709 00:38:01,000 --> 00:38:04,000 et il ya des événements qui pourraient être inscrits à l'intérieur de ma zone de texte, 710 00:38:04,000 --> 00:38:07,000 plutôt que de créer des événements séparés ce que je peux faire, c'est que je peux dire 711 00:38:07,000 --> 00:38:10,000 le délégué de cette zone de texte sera un objet. 712 00:38:10,000 --> 00:38:13,000 Quand je dis que c'est un délégué présent, cela signifie que 713 00:38:13,000 --> 00:38:16,000 chaque fois qu'un événement aurait été renvoyé dans la zone de texte 714 00:38:16,000 --> 00:38:18,000 plutôt que d'avoir à l'enregistrer ou quelque chose comme ça 715 00:38:18,000 --> 00:38:21,000 il va tout simplement d'appeler une méthode sur le délégué. 716 00:38:21,000 --> 00:38:24,000 Par exemple, à l'intérieur de ma zone de texte j'ai une méthode pour quand j'appuie sur 717 00:38:24,000 --> 00:38:27,000 que fait le bouton en bas à droite, 718 00:38:27,000 --> 00:38:30,000 et ainsi de suite plutôt que d'enregistrer ce gestionnaire d'événement que je peux dire est 719 00:38:30,000 --> 00:38:34,000 zone de texte, voici un objet que je veux que vous appelez une méthode sur 720 00:38:34,000 --> 00:38:37,000 quelqu'un appuie sur le bouton à chaque fois fait, 721 00:38:37,000 --> 00:38:40,000 et cela signifie que cet objet doit mettre en œuvre un protocole 722 00:38:40,000 --> 00:38:45,000 qui dit que je promets de définir cette action du bouton fait, 723 00:38:45,000 --> 00:38:47,000 parce que si elle ne définit pas cette méthode et que vous appuyez sur Terminé, 724 00:38:47,000 --> 00:38:49,000 alors il va y avoir confusion. 725 00:38:49,000 --> 00:38:55,000 >> Jetons un coup d'oeil à un exemple. 726 00:38:55,000 --> 00:38:58,000 Ici, je n'ai tout simplement une zone de texte, 727 00:38:58,000 --> 00:39:04,000 et l'une des propriétés de cette zone de texte plus ici sur ce côté droit est le délégué. 728 00:39:04,000 --> 00:39:06,000 Il s'agit d'une propriété de la classe. 729 00:39:06,000 --> 00:39:09,000 Ce que j'ai fait ici, c'est que je contrôler cliqué, et j'ai traîné de cet endroit par ici 730 00:39:09,000 --> 00:39:13,000 le contrôleur de vue, et que dit maintenant le délégué de cette zone de texte 731 00:39:13,000 --> 00:39:18,000 va être le contrôleur de vue. 732 00:39:18,000 --> 00:39:20,000 Cela signifie que lorsque certaines actions se produisent, plutôt que d'enregistrer 733 00:39:20,000 --> 00:39:25,000 les gestionnaires d'événements distincts je veux que vous les envoyer au délégué. 734 00:39:25,000 --> 00:39:28,000 Maintenant, nous allons jeter un oeil à mon contrôleur de vue. 735 00:39:28,000 --> 00:39:32,000 A l'intérieur du fichier. H J'ai fait une promesse. 736 00:39:32,000 --> 00:39:36,000 J'ai promis de mettre en œuvre certaines méthodes à l'intérieur de ce protocole 737 00:39:36,000 --> 00:39:38,000 appelé UITextFieldDelegate, et encore une fois, 738 00:39:38,000 --> 00:39:42,000 c'est juste une liste de certaines choses que je peux choisir de mettre en œuvre. 739 00:39:42,000 --> 00:39:46,000 >> Si je viens ici, dans mon. M dossier, j'ai mis en œuvre un tel procédé. 740 00:39:46,000 --> 00:39:49,000 Je l'ai appelé textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 parce que c'est ce qu'il a été appelé à l'intérieur du protocole. 742 00:39:52,000 --> 00:39:57,000 Et maintenant, chaque fois que j'appuie sur le bouton de l'intérieur fait de ce champ de texte 743 00:39:57,000 --> 00:40:00,000 c'est ce qui va se faire appelé, donc je n'ai pas enregistrer un gestionnaire d'événements. 744 00:40:00,000 --> 00:40:03,000 J'ai branché le délégué, et chaque fois que cet événement se déclenche 745 00:40:03,000 --> 00:40:08,000 c'est la méthode qui sera appelée, si je viens ici à mon storyboard et exécutez-le- 746 00:40:08,000 --> 00:40:11,000 tandis que son chargement, nous pouvons voir ce qu'il fait. 747 00:40:11,000 --> 00:40:13,000 Sur mon écran, j'ai 2 choses. 748 00:40:13,000 --> 00:40:16,000 J'ai ce champ de texte, et j'ai cette étiquette. 749 00:40:16,000 --> 00:40:19,000 Je dis simplement que je veux que le texte de cette étiquette 750 00:40:19,000 --> 00:40:23,000 pour être égale à ce que l'utilisateur a entré à l'intérieur de la zone de texte. 751 00:40:23,000 --> 00:40:26,000 Cette ligne suivante ici est tout simplement une méthode que je vais appeler 752 00:40:26,000 --> 00:40:29,000 sur le champ de texte qui dit que je veux que vous pour masquer le clavier. 753 00:40:29,000 --> 00:40:33,000 C'est juste la méthode arbitraire que Apple a choisi. 754 00:40:33,000 --> 00:40:38,000 >> Encore une fois, avant je faisais quelque chose que j'avais à câbler tout, donc je suis arrivé ici. 755 00:40:38,000 --> 00:40:42,000 Depuis le contrôleur de vue je fais glisser vers la zone de texte. 756 00:40:42,000 --> 00:40:46,000 Je laisse aller, et je peux voir que je peux faire ce bien le texte du champ 757 00:40:46,000 --> 00:40:49,000 depuis plus ici dans le contrôleur de vue que j'ai défini une propriété 758 00:40:49,000 --> 00:40:52,000 qui est un IBOutlet d'un champ de texte. 759 00:40:52,000 --> 00:40:55,000 Ceci signifie que je peux câbler cette propriété jusqu'à 760 00:40:55,000 --> 00:40:59,000 à un champ de texte dans mon interface. 761 00:40:59,000 --> 00:41:03,000 Maintenant, quand je clique sur ce que je peux commencer à taper. 762 00:41:03,000 --> 00:41:06,000 Maintenant, si je clique sur le bouton fait ce qui se passe au feu 763 00:41:06,000 --> 00:41:08,000 un événement que je peux maintenant répondre. 764 00:41:08,000 --> 00:41:10,000 Aucun des gestionnaires d'événements. 765 00:41:10,000 --> 00:41:13,000 C'est ainsi que je viens de répondre à ce bouton fait. 766 00:41:13,000 --> 00:41:15,000 Donner un sens? 767 00:41:15,000 --> 00:41:20,000 >> Ce n'est pas un modèle de conception qui, vous pourriez ne jamais vous retrouver 768 00:41:20,000 --> 00:41:23,000 créer votre propre protocole, mais il suffit de savoir que certains 769 00:41:23,000 --> 00:41:27,000 différents composants iOS enregistrer les événements de différentes manières. 770 00:41:27,000 --> 00:41:29,000 Boutons, par exemple, utiliser ces IBActions. 771 00:41:29,000 --> 00:41:32,000 Les champs de texte, d'autre part, vont utiliser des délégués. 772 00:41:32,000 --> 00:41:36,000 Nous pouvons voir et vous pouvez regarder tout cela à l'intérieur de la documentation. 773 00:41:36,000 --> 00:41:41,000 Soit dit en passant, il ya en fait une tonne de choses interface utilisateur intégrées à iOS pour vous, 774 00:41:41,000 --> 00:41:46,000 Ainsi, par exemple, la façon dont j'ai fait ce que disent fait en bas à droite 775 00:41:46,000 --> 00:41:48,000 est J'ai choisi cet champ de texte. 776 00:41:48,000 --> 00:41:50,000 Je suis venu ici. 777 00:41:50,000 --> 00:41:53,000 J'ai fait défiler vers le bas pour revenir clé, 778 00:41:53,000 --> 00:41:56,000 et je peux réellement faire une foule de choses, comme si je veux ça pour dire 779 00:41:56,000 --> 00:42:00,000 appel d'urgence à la place que je peux faire, ce qui est totalement aléatoire, 780 00:42:00,000 --> 00:42:02,000 et je ne sais pas pourquoi il ya un bouton intégré d'appel d'urgence, 781 00:42:02,000 --> 00:42:06,000 mais il ya, dit-il d'appel d'urgence en lettres très petites. 782 00:42:06,000 --> 00:42:08,000 Là vous allez. 783 00:42:08,000 --> 00:42:12,000 >> Certainement explorer toutes ces différentes options dans iOS. 784 00:42:12,000 --> 00:42:14,000 Toutes les questions sur les délégués? 785 00:42:14,000 --> 00:42:18,000 Encore une fois, un design pattern intéressant que vous devriez être au courant. 786 00:42:18,000 --> 00:42:22,000 Ok, la prochaine jeter un oeil à vues de table. 787 00:42:22,000 --> 00:42:26,000 Une vue de table est essentiellement que la liste des éléments qui sont un peu partout dans iOS. 788 00:42:26,000 --> 00:42:29,000 Lorsque vous êtes en feuilletant l'ensemble de vos contacts, vous cherchez à 789 00:42:29,000 --> 00:42:34,000 la page de configuration, et ce genre de liste de choses est appelé un tableau. 790 00:42:34,000 --> 00:42:37,000 La mise en œuvre d'une vue de table dans iOS est assez simple. 791 00:42:37,000 --> 00:42:41,000 Au lieu de faire une classe qui dérive de celle UIViewController 792 00:42:41,000 --> 00:42:44,000 comme nous l'avons fait avant nous avons simplement besoin de dire plutôt que 793 00:42:44,000 --> 00:42:46,000 tout un UIViewController ne je veux faire, 794 00:42:46,000 --> 00:42:50,000 Je dis tout un UITableViewController ne je veux faire, 795 00:42:50,000 --> 00:42:54,000 donc qui ajoute simplement quelques choses supplémentaires qui sont totalement fait pour nous. 796 00:42:54,000 --> 00:42:58,000 Nous devons faire très peu pour essentiellement remplir les espaces vides à l'intérieur de la table. 797 00:42:58,000 --> 00:43:02,000 >> Pour afficher un tableau que je dois répondre à quelques questions. 798 00:43:02,000 --> 00:43:06,000 La première question que je dois répondre est combien de sections sont dans le tableau? 799 00:43:06,000 --> 00:43:08,000 Lorsque vous êtes en feuilletant votre application Contacts, vous remarquerez que c'est le genre de 800 00:43:08,000 --> 00:43:12,000 organisé par l'As, alors vous avez le monde entier, et vous avez cette tête sous peu. 801 00:43:12,000 --> 00:43:14,000 Chacun de ceux qu'on appelle une section. 802 00:43:14,000 --> 00:43:16,000 Vous pouvez ou ne pouvez pas besoin de ça. 803 00:43:16,000 --> 00:43:19,000 La première chose que vous devez faire est de mettre en œuvre une méthode 804 00:43:19,000 --> 00:43:22,000 appelé tableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Qui retourne simplement le nombre de sections que vous avez, 806 00:43:25,000 --> 00:43:29,000 alors cela pourrait dire retourner un si vous avez un point de vue grande table. 807 00:43:29,000 --> 00:43:33,000 La prochaine question que iOS a besoin de savoir, c'est combien de lignes avez-vous? 808 00:43:33,000 --> 00:43:36,000 Par exemple, vous êtes en feuilletant un tableau. 809 00:43:36,000 --> 00:43:39,000 Vous disposez d'un nombre fixe de chansons que vous cherchez à ou un nombre fixe de contacts. 810 00:43:39,000 --> 00:43:41,000 Si vous êtes moi, bien sûr, pas tant que ça, 811 00:43:41,000 --> 00:43:44,000 et c'est comme ça que iOS ne sait combien de cellules à afficher. 812 00:43:44,000 --> 00:43:46,000 >> Encore une fois, cela pourrait dire quelque chose comme retour 3. 813 00:43:46,000 --> 00:43:49,000 Mon point de vue le tableau a 3 lignes. 814 00:43:49,000 --> 00:43:52,000 Enfin, iOS a besoin de savoir ce que chaque cellule ressemble, 815 00:43:52,000 --> 00:43:54,000 donc ce qu'il se passe réellement à faire est d'appeler cette méthode ici-bas, 816 00:43:54,000 --> 00:43:57,000 ce tableView: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Il va appeler cette méthode sur chaque cellule à l'intérieur de votre table. 818 00:44:01,000 --> 00:44:03,000 Comment sait-il combien de fois l'appeler? 819 00:44:03,000 --> 00:44:06,000 Eh bien, vous avez dit à l'intérieur du nombre de lignes dans la section. 820 00:44:06,000 --> 00:44:08,000 Nous allons appeler ce sur chacune de nos cellules, 821 00:44:08,000 --> 00:44:11,000 et à l'intérieur de ce que vous pouvez faire des choses comme 822 00:44:11,000 --> 00:44:16,000 définir le texte ou vous dire ce que le petit bouton bleu sur le côté droit fait. 823 00:44:16,000 --> 00:44:19,000 Le motif pour obtenir ces cellules, nous allons utiliser cette méthode 824 00:44:19,000 --> 00:44:22,000 appelé dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C est en fait très bien connu pour la longueur ridicule de leurs noms de méthodes, 826 00:44:29,000 --> 00:44:32,000 et c'est vraiment une jolie boîte en exemple de point. 827 00:44:32,000 --> 00:44:37,000 Que cette méthode ne fait que cela en dit juste que je veux que vous me donniez une cellule. 828 00:44:37,000 --> 00:44:39,000 Juste une chose iOS. 829 00:44:39,000 --> 00:44:41,000 Si vous avez quelque chose comme 100.000 chansons sur votre iPod 830 00:44:41,000 --> 00:44:45,000 ce que iOS ne veut pas faire est d'allouer 100.000 cellules, 831 00:44:45,000 --> 00:44:48,000 parce que si vous êtes au sommet de votre liste, avez-vous vraiment besoin d'allouer de la mémoire 832 00:44:48,000 --> 00:44:51,000 de la cellule qui est 99.000 lignes vers le bas? 833 00:44:51,000 --> 00:44:55,000 Non, parce que vous vous pouvez faire défiler genre d'affecter comme vous allez le long. 834 00:44:55,000 --> 00:44:57,000 Ceci est fait pour vous. 835 00:44:57,000 --> 00:44:59,000 Vous n'avez pas à vous soucier de tous ces trucs stupides performances. 836 00:44:59,000 --> 00:45:02,000 Tout ce que vous dites est ce que vous appelez la méthode dequeueReusableCellWithIdentifier, 837 00:45:02,000 --> 00:45:06,000 et cela dit, d'accord, si vous avez besoin d', je vais créer une nouvelle cellule pour vous. 838 00:45:06,000 --> 00:45:09,000 >> Mais si vous êtes au bas de la table et que vous avez déjà alloué certaines cellules 839 00:45:09,000 --> 00:45:12,000 dans la partie supérieure de la table qui vous êtes vraiment pas avoir besoin de sitôt 840 00:45:12,000 --> 00:45:15,000 Je vais vous donner un de ceux qui reviennent au lieu d'allouer une nouvelle, 841 00:45:15,000 --> 00:45:17,000 et c'est donc une préoccupation belle performance. 842 00:45:17,000 --> 00:45:21,000 Vous n'avez pas besoin d'allouer les cellules-même. 843 00:45:21,000 --> 00:45:23,000 Cela va vous redonner une cellule. 844 00:45:23,000 --> 00:45:25,000 Il va revenir à vous un objet de cellule. 845 00:45:25,000 --> 00:45:28,000 Une fois que vous avez l'objet de cellule, vous pouvez faire des choses pour elle. 846 00:45:28,000 --> 00:45:32,000 Vous pouvez définir le texte de la cellule avec cette propriété appelée étiquette de texte. 847 00:45:32,000 --> 00:45:36,000 Vous pouvez ajouter cette flèche à droite ou à d'autres choses au hasard 848 00:45:36,000 --> 00:45:41,000 avec cette autre propriété appelée accessoryType, et ainsi de suite, et ainsi de suite. 849 00:45:41,000 --> 00:45:46,000 >> Jetons un coup d'oeil à la mise en œuvre fait maintenant une vue de tableau. 850 00:45:46,000 --> 00:45:49,000 Quand j'ai créé ce projet 851 00:45:49,000 --> 00:45:53,000 plutôt que de dire l'application seule vue fait, je suis venu ici 852 00:45:53,000 --> 00:45:57,000 de maître-détail d'application, et donc en gros ce qui correspond à l'application électronique 853 00:45:57,000 --> 00:46:01,000 sur l'iPad avec l'affichage du tableau sur la gauche et ensuite le contenu sur la droite. 854 00:46:01,000 --> 00:46:07,000 Sur l'iPod ou de l'iPhone cela va correspondre à une vue de tableau unique. 855 00:46:07,000 --> 00:46:10,000 C'est là que j'ai eu mon code de démarrage. 856 00:46:10,000 --> 00:46:13,000 >> Jetons d'abord un coup d'oeil à la table de montage. 857 00:46:13,000 --> 00:46:15,000 Tout cela a été fait pour moi, essentiellement créé. 858 00:46:15,000 --> 00:46:18,000 Cette barre de navigation m'a montré ce qu'est une cellule par exemple pourrait ressembler, 859 00:46:18,000 --> 00:46:22,000 et je peux double-cliquez sur cela, modifiez le titre. 860 00:46:22,000 --> 00:46:25,000 Toute préoccupation interface autres que je peux gérer là-bas. 861 00:46:25,000 --> 00:46:27,000 Le fichier d'en-tête ressemble vraiment simple. 862 00:46:27,000 --> 00:46:30,000 Plutôt que de dire que c'est UIViewController nous sommes en train de dire que c'est une 863 00:46:30,000 --> 00:46:35,000 TableViewController, donc nous savons que nous voulons appeler toutes les méthodes de table. 864 00:46:35,000 --> 00:46:38,000 Ensuite, je veux créer une propriété qui va représenter 865 00:46:38,000 --> 00:46:40,000 les choses à l'intérieur de ma table. 866 00:46:40,000 --> 00:46:43,000 Ce tableau va afficher arbitrairement 867 00:46:43,000 --> 00:46:46,000 une liste de fruits, et donc j'ai besoin de créer une gamme 868 00:46:46,000 --> 00:46:49,000 dans laquelle je peux insérer des fruits. 869 00:46:49,000 --> 00:46:52,000 A l'intérieur de mon fichier d'implémentation, la première chose que je veux faire 870 00:46:52,000 --> 00:46:55,000 c'est que je veux m'assurer que je initialiser ce tableau. 871 00:46:55,000 --> 00:46:58,000 >> J'ai dit alloc init, créé mon tableau de fruits, 872 00:46:58,000 --> 00:47:03,000 et je suis en ajoutant 4 choses à lui, dont l'un est beaucoup plus controversé que les 3 autres. 873 00:47:03,000 --> 00:47:06,000 Et maintenant, j'ai un tableau de taille 4. 874 00:47:06,000 --> 00:47:08,000 Nous sommes en l'agitant en CS50. 875 00:47:08,000 --> 00:47:11,000 J'ai maintenant un tableau de taille 4. 876 00:47:11,000 --> 00:47:13,000 Maintenant, je vais commencer à répondre à ces questions, et en fait, 877 00:47:13,000 --> 00:47:16,000 quand j'ai créé cette application tout cela a été déjà fait pour moi. 878 00:47:16,000 --> 00:47:19,000 Je n'ai pas besoin de taper sur le nombre de sections en vue tableau. 879 00:47:19,000 --> 00:47:22,000 Il était déjà là, et je suis de remplir les blancs. 880 00:47:22,000 --> 00:47:24,000 Combien de sections ai-je? 881 00:47:24,000 --> 00:47:26,000 One. Tout est fait. 882 00:47:26,000 --> 00:47:28,000 Combien de lignes puis-je avoir? 883 00:47:28,000 --> 00:47:31,000 Eh bien, j'ai une ligne pour chaque fruit, ce nombre 884 00:47:31,000 --> 00:47:34,000 est une propriété d'un tableau qui indique quelle est sa taille? 885 00:47:34,000 --> 00:47:36,000 C'est le nombre de lignes que j'ai. 886 00:47:36,000 --> 00:47:42,000 Enfin, je dois dire qu'est-ce que chaque cellule ressemble? 887 00:47:42,000 --> 00:47:46,000 Je vais dire dequeueReusableCellWithIdentifier. 888 00:47:46,000 --> 00:47:48,000 >> Encore une fois, cela a déjà été écrit pour moi. 889 00:47:48,000 --> 00:47:51,000 Je n'ai pas eu à le faire moi-même, et je veux revenir 890 00:47:51,000 --> 00:47:54,000 cette cellule à cet endroit. 891 00:47:54,000 --> 00:47:57,000 Rappelez-vous que nous appelons cette même méthode sur chaque cellule, 892 00:47:57,000 --> 00:48:01,000 et cet argument ici, cet argument indexPath, 893 00:48:01,000 --> 00:48:03,000 dit ce que je suis dedans rangée 894 00:48:03,000 --> 00:48:05,000 Si je dis indexPath.row ici 895 00:48:05,000 --> 00:48:09,000 ce sera 0, alors il sera de 1, alors il sera 2, et ce n'est donc je sais 896 00:48:09,000 --> 00:48:11,000 quelle cellule je suis en train d'afficher. 897 00:48:11,000 --> 00:48:15,000 Je veux mettre le texte de la cellule en utilisant cette propriété Textlabel 898 00:48:15,000 --> 00:48:19,000 aller à l'intérieur mon tableau de fruits et obtenir 899 00:48:19,000 --> 00:48:21,000 l'objet correspondant à chaque rangée. 900 00:48:21,000 --> 00:48:24,000 Si c'est une chaîne, je suis en train de mettre 901 00:48:24,000 --> 00:48:28,000 la propriété text d'une chaîne. 902 00:48:28,000 --> 00:48:30,000 Je peux faire autre chose. 903 00:48:30,000 --> 00:48:32,000 Je peux aussi enregistrer un gestionnaire d'événements sur chacune des cellules, 904 00:48:32,000 --> 00:48:35,000 alors quand je tape chacune de ces cellules 905 00:48:35,000 --> 00:48:39,000 ce didSelectRowAtIndexPath, cela va être appelé pour moi, 906 00:48:39,000 --> 00:48:42,000 si simplement en définissant ce que je peux maintenant gérer ce qui se passe 907 00:48:42,000 --> 00:48:46,000 lorsque vous appuyez sur une cellule, et encore une fois, nous passons dans la cellule qui a été exploité 908 00:48:46,000 --> 00:48:50,000 afin que nous puissions utiliser ce gestionnaire d'événements de même pour l'ensemble de nos cellules. 909 00:48:50,000 --> 00:48:53,000 >> Encore une fois, c'est quelque chose que iOS est fait pour moi. 910 00:48:53,000 --> 00:48:55,000 Nous allons afficher un autre popup ennuyant 911 00:48:55,000 --> 00:48:59,000 qui dit simplement que vous avez choisi quelque chose où que quelque chose 912 00:48:59,000 --> 00:49:04,000 va être l'objet de ligne. 913 00:49:04,000 --> 00:49:10,000 Quand je lance ce, je vais avoir cette vue belle table 914 00:49:10,000 --> 00:49:14,000 avec une ligne pour chacun de ces fruits, et si je appuyez sur l'une 915 00:49:14,000 --> 00:49:16,000 il me dit ce qui s'est passé. 916 00:49:16,000 --> 00:49:21,000 Donner un sens? 917 00:49:21,000 --> 00:49:24,000 Bâtissons un peu plus complexe d'une application, 918 00:49:24,000 --> 00:49:28,000 autant que vous avez choisi en cliquant sur la tomate est. 919 00:49:28,000 --> 00:49:31,000 La belle partie de la scénarisation 920 00:49:31,000 --> 00:49:35,000 est que ce n'est pas seulement aller à des écrans d'aide de conception nous individuellement, 921 00:49:35,000 --> 00:49:38,000 il va aussi nous aider à relier notre application entière, 922 00:49:38,000 --> 00:49:42,000 si l'application finale, nous serons bâtiment est cette belle sportive lecteur de nouvelles, 923 00:49:42,000 --> 00:49:45,000 et il va avoir plusieurs écrans, et pour que je puisse représenter 924 00:49:45,000 --> 00:49:48,000 chacun de ces écrans multiples sur le story-board, 925 00:49:48,000 --> 00:49:52,000 et je peux effectuer un zoom arrière et de voir mon application à partir d'un niveau élevé. 926 00:49:52,000 --> 00:49:55,000 >> Pour créer un nouvel élément à l'intérieur de mon storyboard 927 00:49:55,000 --> 00:49:59,000 il est vraiment simple à l'intérieur d'Interface Builder. 928 00:49:59,000 --> 00:50:01,000 Si je veux ajouter un autre écran pour cela, par exemple, 929 00:50:01,000 --> 00:50:06,000 Je peux d'abord effectuer un zoom arrière avec le zoom par pincement que Apple aime tellement, 930 00:50:06,000 --> 00:50:09,000 et ici-bas avant de chercher un bouton 931 00:50:09,000 --> 00:50:12,000 et je fais glisser un bouton 932 00:50:12,000 --> 00:50:15,000 si je veux créer un nouvel écran je peux vraiment simple glisser-déposer 933 00:50:15,000 --> 00:50:19,000 un contrôleur de vue entière, donc si je prends cela, tirez ici, 934 00:50:19,000 --> 00:50:23,000 bon, il ya un autre écran, et donc maintenant utiliser ce fichier storyboard même 935 00:50:23,000 --> 00:50:26,000 Je peux avoir tous les écrans à l'intérieur de mon application et je peux effectuer un zoom arrière 936 00:50:26,000 --> 00:50:28,000 et de voir comment ils interagissent. 937 00:50:28,000 --> 00:50:32,000 Ceux-ci ne pourront pas interagir encore. 938 00:50:32,000 --> 00:50:36,000 La façon dont ces 2 écrans interagissent est de définir les relations. 939 00:50:36,000 --> 00:50:39,000 Vous pouvez en principe dire cet écran, lorsque vous appuyez sur ce bouton, 940 00:50:39,000 --> 00:50:42,000 Je veux que vous faites glisser vers ce nouvel écran. 941 00:50:42,000 --> 00:50:44,000 Cela signifie qu'il ya ce genre de relation entre 942 00:50:44,000 --> 00:50:46,000  le premier écran et le second écran. 943 00:50:46,000 --> 00:50:49,000 Vous aurez essentiellement une flèche de ce bouton sur le second écran 944 00:50:49,000 --> 00:50:53,000 dire que lorsque vous appuyez sur ce bouton c'est là où je veux aller. 945 00:50:53,000 --> 00:50:57,000 Tout comme nous contrôlons cliqué et traîné à définir les points de vente 946 00:50:57,000 --> 00:51:01,000 nous allons faire la même chose pour définir ces enchaînements. 947 00:51:01,000 --> 00:51:05,000 >> Nous allons voir un exemple de cela, et avant que nous ne la transition 948 00:51:05,000 --> 00:51:08,000 d'un écran à un autre iOS est assez gentil pour appeler cette méthode 949 00:51:08,000 --> 00:51:11,000 appelé prepareForSegue, et c'est là que nous pouvons commencer à 950 00:51:11,000 --> 00:51:14,000 l'envoi de données d'une application à l'autre. 951 00:51:14,000 --> 00:51:17,000 Dans l'exemple que nous sommes sur le point de regarder il sera simplement nous permettre 952 00:51:17,000 --> 00:51:20,000 pour filtrer les équipes de baseball par les ligues et les divisions. 953 00:51:20,000 --> 00:51:23,000 Lorsque je sélectionne une ligue, par exemple, je veux faire la transition 954 00:51:23,000 --> 00:51:25,000 à mon prochain écran où je peux afficher toutes les divisions 955 00:51:25,000 --> 00:51:27,000 dans cette ligue ou toutes les différentes équipes. 956 00:51:27,000 --> 00:51:31,000 J'ai besoin d'envoyer à cet écran ce que vous devez afficher équipes. 957 00:51:31,000 --> 00:51:35,000 Pour ce faire, je vais prendre avantage de cette méthode ici. 958 00:51:35,000 --> 00:51:39,000 >> Enfin, juste un point au hasard sur iOS. 959 00:51:39,000 --> 00:51:41,000 Si vous souhaitez stocker les données, il ya cette chose appelée base de données, 960 00:51:41,000 --> 00:51:44,000 qui est en fait assez compliqué de travailler avec. 961 00:51:44,000 --> 00:51:47,000 Vous pouvez également utiliser SQL pour stocker des données, 962 00:51:47,000 --> 00:51:51,000 qui, encore une fois, est agréable mais un peu sur le côté le plus compliqué de travailler avec, 963 00:51:51,000 --> 00:51:55,000 mais iOS prend également en charge ces choses vraiment cool appelé listes de propriétés, 964 00:51:55,000 --> 00:52:00,000 et une liste de propriétés est juste un fichier qui représente paires clé-valeur. 965 00:52:00,000 --> 00:52:03,000 Vous pouvez définir une liste de clés, et vous dites: cette touche va être un tableau. 966 00:52:03,000 --> 00:52:06,000 Cette clé va être une chaîne, et plus généralement tout ce que vous pouvez faire 967 00:52:06,000 --> 00:52:10,000 en JSON, vous pouvez le faire à l'intérieur d'une liste de propriétés, 968 00:52:10,000 --> 00:52:14,000 et si cela vraiment bien nous permet de travailler avec des données. 969 00:52:14,000 --> 00:52:18,000 Par exemple, j'ai ce Teams.plist que j'ai créé. 970 00:52:18,000 --> 00:52:22,000 J'ai créé un nouveau fichier plist, et je peux naviguer. 971 00:52:22,000 --> 00:52:26,000 Il s'agit d'un dictionnaire, il s'agit d'un dictionnaire, ce sont des chaînes de caractères, 972 00:52:26,000 --> 00:52:30,000 et donc c'est une jolie représentation graphique d'un document JSON 973 00:52:30,000 --> 00:52:33,000 ou tout simplement un ensemble de paires clé-valeur, 974 00:52:33,000 --> 00:52:37,000 et si ce sont les données que je vais travailler avec l'intérieur de mon application. 975 00:52:37,000 --> 00:52:40,000 >> Voyons d'abord venir ici. Nous avons des dossiers beaucoup plus maintenant. 976 00:52:40,000 --> 00:52:44,000 Mais nous allons d'abord venir ici pour le storyboard. 977 00:52:44,000 --> 00:52:48,000 Le storyboard ici-si je peux effectuer un zoom arrière- 978 00:52:48,000 --> 00:52:51,000 nous pouvons maintenant voir que c'est le flux de mon application. 979 00:52:51,000 --> 00:52:53,000 Je vais d'abord commencer sur cet écran. 980 00:52:53,000 --> 00:52:55,000 Je vais creuser à cet écran, 981 00:52:55,000 --> 00:52:58,000 et je vais creuser à cet écran, et nous pouvons voir ici que si je sorte de 982 00:52:58,000 --> 00:53:04,000 déplacer un de ces autour de nous ces flèches aller d'ici à là, 983 00:53:04,000 --> 00:53:08,000 et la façon dont je définis cette flèche était si je zoomer un peu, 984 00:53:08,000 --> 00:53:12,000 et si je viens sur ce contrôleur de vue, 985 00:53:12,000 --> 00:53:16,000 et voici une cellule, et je tiens à dire que lorsque vous appuyez sur une cellule 986 00:53:16,000 --> 00:53:18,000 Je veux que vous faites glisser sur un autre écran. 987 00:53:18,000 --> 00:53:21,000 Je ne peux tout simplement maintenez le contrôle, 988 00:53:21,000 --> 00:53:26,000 faire défiler un peu, maintenez la touche de commande, faites glisser cette cellule plus et de laisser aller. 989 00:53:26,000 --> 00:53:30,000 >> Et ici nous dire ce qui est de la transition que vous souhaitez utiliser? 990 00:53:30,000 --> 00:53:32,000 Voulez-vous utiliser ce truc diapositive qui s'appelle push? 991 00:53:32,000 --> 00:53:34,000 Voulez-vous glisser vers le haut à partir du bas? 992 00:53:34,000 --> 00:53:36,000 C'est ce qu'on appelle modale. 993 00:53:36,000 --> 00:53:40,000 Et une fois que je clique sur l'un de ceux-ci, il va tirer cette flèche pour moi, 994 00:53:40,000 --> 00:53:44,000 et cela veut dire que j'ai effectivement manipulé ce qui se passe lorsque j'appuie sur ce bouton graphique. 995 00:53:44,000 --> 00:53:48,000 Je n'ai pas écrit de code à fait glisser d'un écran à la suivante. 996 00:53:48,000 --> 00:53:51,000 J'ai défini ce visuellement l'intérieur d'Interface Builder. 997 00:53:51,000 --> 00:53:55,000 Si je clique sur cette flèche, on peut voir que j'ai donné à cette chose un nom. 998 00:53:55,000 --> 00:53:59,000 Je l'ai appelé showDivisions, et c'est pour que je puisse savoir 999 00:53:59,000 --> 00:54:03,000 ce passage est sur le point de se produire, et nous verrons pourquoi dans une seconde. 1000 00:54:03,000 --> 00:54:06,000 C'est comme ça que j'ai câblé les différents écrans dans mon application. 1001 00:54:06,000 --> 00:54:09,000 S'il s'agissait d'un bouton, par exemple, plutôt que d'une vue de tableau, 1002 00:54:09,000 --> 00:54:11,000 Je pouvais contrôler cliquez sur le bouton, faites-la glisser à l'écran suivant, 1003 00:54:11,000 --> 00:54:16,000 et c'est comme ça que je peux faire la navigation de cette façon. 1004 00:54:16,000 --> 00:54:19,000 >> Très rapidement, si nous entrons dans la MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 encore une fois, nous allons simplement de définir une liste de choses 1006 00:54:22,000 --> 00:54:26,000 qui sera affiché dans le tableau. 1007 00:54:26,000 --> 00:54:29,000 Ici, je dis que je veux que vous preniez ce fichier plist, 1008 00:54:29,000 --> 00:54:32,000 et je veux que vous le charger dans un dictionnaire, 1009 00:54:32,000 --> 00:54:35,000 et une fois que vous avez ce dictionnaire, je vais répondre à ces mêmes questions. 1010 00:54:35,000 --> 00:54:37,000 Voici le nombre de sections. 1011 00:54:37,000 --> 00:54:41,000 Un, il ya une ligne pour chaque ligue, et le texte de chaque cellule 1012 00:54:41,000 --> 00:54:46,000 devrait être soit la première, la première ligue, la deuxième ligue, et ainsi de suite. 1013 00:54:46,000 --> 00:54:51,000 Enfin, je vais utiliser cette méthode que nous venons de le voir appelé prepareForSegue, 1014 00:54:51,000 --> 00:54:54,000 et c'est la méthode qui va être déclenché lorsque je clique sur 1015 00:54:54,000 --> 00:54:57,000 sur l'une de ces rangées et par conséquent l'activation de la transition 1016 00:54:57,000 --> 00:54:59,000 que j'ai mis en place avec les flèches. 1017 00:54:59,000 --> 00:55:02,000 Cela revient à dire que je peux avoir plusieurs 1018 00:55:02,000 --> 00:55:05,000 relations d'un écran à l'autre. 1019 00:55:05,000 --> 00:55:08,000 Si j'ai 2 boutons et chaque bouton vous amène à un autre écran 1020 00:55:08,000 --> 00:55:10,000 Je vais avoir 2 enchaînements, 1 pour chaque bouton. 1021 00:55:10,000 --> 00:55:14,000 Mais cette prepareForSegue est, encore une fois, va être réutilisés 1022 00:55:14,000 --> 00:55:17,000 pour chacune des différentes relations, ce qui signifie que j'ai besoin d'une manière 1023 00:55:17,000 --> 00:55:21,000 d'identifier si vous appuyez sur le premier bouton ou que vous appuyez sur la deuxième touche. 1024 00:55:21,000 --> 00:55:25,000 >> Rappelez-vous quand j'ai donné cette segue un nom, ce showDivisions, 1025 00:55:25,000 --> 00:55:29,000 c'est comme ça que je sais maintenant que c'est le segue qui a été activée. 1026 00:55:29,000 --> 00:55:32,000 Tout ce que je veux faire, c'est que je veux dire 1027 00:55:32,000 --> 00:55:35,000 Je veux comprendre ce que je viens de frapper, 1028 00:55:35,000 --> 00:55:38,000 et ainsi d'obtenir cela, je peux dire que je veux le indexPath pour la ligne sélectionnée, 1029 00:55:38,000 --> 00:55:42,000 rappeler le indexPath dit exactement où je viens cliqué, 1030 00:55:42,000 --> 00:55:47,000 et puis je tiens à dire que je veux savoir où je vais. 1031 00:55:47,000 --> 00:55:50,000 Cette destinationViewController, c'est une propriété de l'enchaînement. 1032 00:55:50,000 --> 00:55:53,000 C'est l'écran que je vais, 1033 00:55:53,000 --> 00:55:56,000 je sais que l'écran, je vais s'appelle DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 parce que j'ai créé cette classe, 1035 00:55:59,000 --> 00:56:02,000 et maintenant si je dis d.divisions 1036 00:56:02,000 --> 00:56:06,000 Je suis en train de mettre une propriété du contrôleur de vue que je m'apprête à aller. 1037 00:56:06,000 --> 00:56:10,000 C'est ainsi que je suis l'envoi de données d'un écran à un autre écran. 1038 00:56:10,000 --> 00:56:13,000 >> Il suffit de regarder ce DivisionsViewController 1039 00:56:13,000 --> 00:56:16,000 vous pouvez voir ici que dans le fichier. h 1040 00:56:16,000 --> 00:56:20,000 il ya que les divisions de propriété, et c'est ce que je suis fondamentalement peuplement, 1041 00:56:20,000 --> 00:56:25,000 c'est comme ça que je sais que je suis l'affichage des divisions correspondant aux 1042 00:56:25,000 --> 00:56:28,000 la ligue que je clique dessus, et encore une fois, 1043 00:56:28,000 --> 00:56:31,000 l'affichage du tableau réelle se présente pratiquement la même chose, juste répondre à ceux 1044 00:56:31,000 --> 00:56:34,000 3 questions simples ainsi que l'identification 1045 00:56:34,000 --> 00:56:37,000 ce qui se passe lorsque vous passez à l'écran suivant. 1046 00:56:37,000 --> 00:56:40,000 Juste une couple d'autres choses ici. 1047 00:56:40,000 --> 00:56:43,000 Vous remarquerez en haut ici que plutôt que de dire # include 1048 00:56:43,000 --> 00:56:45,000 Je suis en train de dire # import. 1049 00:56:45,000 --> 00:56:47,000 Ceci est juste une chose Objective-C. 1050 00:56:47,000 --> 00:56:52,000 L'importation est essentiellement une version plus sympathique de include, 1051 00:56:52,000 --> 00:56:57,000 et, par exemple, nous avons besoin de savoir ce que cette classe est, 1052 00:56:57,000 --> 00:57:00,000 je ne peux pas vous dire DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Si nous n'avions pas hashtag l'intérieur standardio.c de notre fichier. C 1054 00:57:05,000 --> 00:57:07,000 le compilateur n'avais aucune idée de ce qui était printf. 1055 00:57:07,000 --> 00:57:12,000 De même, si je n'ai pas importer le DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 le compilateur n'a vraiment aucune idée de ce qu'est un DivisionsViewController est. 1057 00:57:16,000 --> 00:57:19,000 Assurez-vous que l'intérieur de vos fichiers différents m. Vous veillez à importer 1058 00:57:19,000 --> 00:57:25,000 les fichiers correspondants. h afin que le compilateur sait ce qui se passe. 1059 00:57:25,000 --> 00:57:31,000 >> Enfin, ce que Apple ne permet finalement est d'afficher des données en utilisant un affichage Web, 1060 00:57:31,000 --> 00:57:35,000 et ainsi un affichage Web est un objet dans lequel vous pouvez intégrer 1061 00:57:35,000 --> 00:57:37,000 un navigateur peu à l'intérieur de votre application. 1062 00:57:37,000 --> 00:57:40,000 Tout ce que vous devez faire est de fournir une URL de votre navigateur, 1063 00:57:40,000 --> 00:57:43,000 donc je veux aller à mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 et voilà comment je peux accéder à la page d'accueil de chaque équipe, 1065 00:57:46,000 --> 00:57:49,000 et si en passant dans cette URL 1066 00:57:49,000 --> 00:57:52,000 l'affichage Web peut afficher ceci pour moi, et je peux naviguer autour, 1067 00:57:52,000 --> 00:58:01,000 et le simulateur est en cours d'utilisation par celui-ci. 1068 00:58:01,000 --> 00:58:03,000 Maintenant, cela venait de mon plist. 1069 00:58:03,000 --> 00:58:07,000 Si je clique sur ce cela aussi vient de mon plist, et ce glissement a été traitée 1070 00:58:07,000 --> 00:58:09,000 en définissant ces enchaînements. 1071 00:58:09,000 --> 00:58:12,000 Je clique sur cela et plus d'un, 1072 00:58:12,000 --> 00:58:15,000 et maintenant voici ma UIWebView, alors juste comme ça 1073 00:58:15,000 --> 00:58:19,000 voici le site de l'URL que je viens intégré, 1074 00:58:19,000 --> 00:58:21,000 et je n'ai pas eu à gérer quoi que ce soit fou. 1075 00:58:21,000 --> 00:58:24,000 Voici comment afficher une page Web. 1076 00:58:24,000 --> 00:58:27,000 Des choses comme ce bouton de retour ici sont également donnés pour moi 1077 00:58:27,000 --> 00:58:33,000 tout à fait gratuitement, parce que j'ai défini ces relations en utilisant des enchaînements. 1078 00:58:33,000 --> 00:58:37,000 >> Des questions? Ouais. 1079 00:58:37,000 --> 00:58:40,000 [Étudiants] Ainsi, lorsque vous utilisez alloc, vous n'aurez jamais à quoi que ce soit gratuit? 1080 00:58:40,000 --> 00:58:43,000 Justement, lorsque vous appelez alloc et init, vous n'avez pas à le libérer. 1081 00:58:43,000 --> 00:58:46,000 IOS va gérer tout cela pour vous. 1082 00:58:46,000 --> 00:58:51,000 C'est merveilleux, et vous n'êtes pas enfreindre les règles. Ouais. 1083 00:58:51,000 --> 00:58:54,000 [Étudiants] Si vous étiez à inclure plus d'équipes qui pourraient s'intégrer à l'écran, 1084 00:58:54,000 --> 00:58:58,000 ne serait-il automatiquement une option de défilement, ou est-ce quelque chose que vous devez ajouter? 1085 00:58:58,000 --> 00:59:01,000 Justement, si je n'avais plus d'équipes, par exemple, il gère automatiquement 1086 00:59:01,000 --> 00:59:04,000 le défilement pour moi, et tous les problèmes de performance 1087 00:59:04,000 --> 00:59:08,000 avec la grande table sont également traitées totalement pour moi. 1088 00:59:08,000 --> 00:59:11,000 >> D'autres questions? 1089 00:59:11,000 --> 00:59:13,000 Tout ce code va être affichée. 1090 00:59:13,000 --> 00:59:16,000 Nous avons un peu passé sous silence un peu des détails les plus petits, 1091 00:59:16,000 --> 00:59:19,000 mais des choses comme fixer quelques propriétés de l'affichage Web 1092 00:59:19,000 --> 00:59:22,000 sont juste des choses que vous pouvez obtenir en naviguant sur la documentation d'Apple, 1093 00:59:22,000 --> 00:59:24,000 ce qui est vraiment, vraiment bien aménagé. 1094 00:59:24,000 --> 00:59:27,000 Ils ont beaucoup d'exemples d'applications et usages par exemple 1095 00:59:27,000 --> 00:59:34,000 d'API, il faut absolument parcourir les si vous le pouvez. 1096 00:59:34,000 --> 00:59:36,000 Juste quelques liens utiles vous voudrez peut-être jeter un coup d'oeil. 1097 00:59:36,000 --> 00:59:38,000 Voici quelques guides de la documentation à portée de main. 1098 00:59:38,000 --> 00:59:41,000 Les URL sont massifs, ils sont donc raccourcie. 1099 00:59:41,000 --> 00:59:44,000 Cette première est toute la bibliothèque de documentation. 1100 00:59:44,000 --> 00:59:46,000 Il ya des barres de recherche petits, donc si vous commencez à taper le bouton 1101 00:59:46,000 --> 00:59:50,000 il va commencer en vous donnant toutes les informations sur toutes les choses que vous pouvez faire avec un bouton. 1102 00:59:50,000 --> 00:59:53,000 J'ai également inclus le Guide de programmation Table View. 1103 00:59:53,000 --> 00:59:56,000 Il gère les vues de table beaucoup plus en détail, 1104 00:59:56,000 --> 01:00:00,000 comment faire les choses comme ajouter dynamiquement des cellules ou des cellules les modifier ou les supprimer. 1105 01:00:00,000 --> 01:00:02,000 >> Il ya beaucoup d'exemples d'applications d'Apple qui va vous montrer comment faire, 1106 01:00:02,000 --> 01:00:05,000 et enfin, ce dernier est l'Interface Guidelines de l'homme, 1107 01:00:05,000 --> 01:00:09,000 et il s'agit essentiellement d'une discussion de composants d'interface utilisateur, 1108 01:00:09,000 --> 01:00:12,000 des choses comme ne pas faire un bouton qui est de 4 pixels par 4 pixels. 1109 01:00:12,000 --> 01:00:15,000 C'est une mauvaise idée, et d'autres choses que Apple veut que vous fassiez 1110 01:00:15,000 --> 01:00:18,000 d'encourager une bonne conception. 1111 01:00:18,000 --> 01:00:23,000 >> Toutes les dernières questions avant de conclure? 1112 01:00:23,000 --> 01:00:27,000 Très bien, certainement, n'hésitez pas à-nous allons avoir des étiquettes spéciales sur Discuter. 1113 01:00:27,000 --> 01:00:30,000 Nous aurons un iOS un, donc certainement n'hésitez pas à utiliser cela. 1114 01:00:30,000 --> 01:00:34,000 Si vous souhaitez travailler avec vos camarades de classe sur des projets 1115 01:00:34,000 --> 01:00:37,000 ou aider à comprendre certaines choses au hasard iOS 1116 01:00:37,000 --> 01:00:40,000 n'hésitez pas à m'envoyer un mail, et certainement parcourir toute la ligne de code, car 1117 01:00:40,000 --> 01:00:43,000 seulement dans l'intérêt du temps nous avons un peu passé sous silence le plus 1118 01:00:43,000 --> 01:00:45,000 détails les plus fins grains de choses. 1119 01:00:45,000 --> 01:00:47,000 Mais si non, alors bonne chance pour vos projets iOS, et j'espère que nous aurons 1120 01:00:47,000 --> 01:00:53,000 un afflux important d'applications dans l'App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]