1 00:00:03,720 --> 00:00:04,480 -Bonjour à tous. 2 00:00:04,800 --> 00:00:05,800 Je vais vous présenter 3 00:00:06,120 --> 00:00:09,320 les tabs spécifiques qu'on pouvait avoir 4 00:00:09,640 --> 00:00:12,720 quand on inspectait l'objet dans l'Inspector avec Cmd+I. 5 00:00:13,040 --> 00:00:17,320 Ici, les tabs qu'on avait pour "Date", 6 00:00:17,640 --> 00:00:19,880 par exemple le calendrier, sont implémentées. 7 00:00:20,200 --> 00:00:22,960 Pour s'y intéresser, on sait que l'Inspector s'appelle GT Inspector, 8 00:00:23,280 --> 00:00:26,440 on va se servir d'un outil qui s'appelle le Finder 9 00:00:26,760 --> 00:00:31,240 et on va aller chercher des pragmas qui contiennent "gtInspector". 10 00:00:31,560 --> 00:00:32,840 Donc, on sélectionne "Pragmas". 11 00:00:33,160 --> 00:00:34,760 On va avoir trois pragmas qui sortent. 12 00:00:35,080 --> 00:00:37,280 "gtInspectorPresentationOrder", ça, c'est intéressant. 13 00:00:37,600 --> 00:00:39,920 On double-clique dessus, ça nous montre tous les senders. 14 00:00:40,240 --> 00:00:43,600 Nous, ce qu'on aimerait trouver, c'est le sender pour la date. 15 00:00:43,920 --> 00:00:44,840 On va chercher "Date". 16 00:00:45,160 --> 00:00:48,080 On peut voir ici que "gtInspectorPreviewIn", 17 00:00:48,400 --> 00:00:52,240 ça va définir une composite morph avec le titre "Calendrier", 18 00:00:52,560 --> 00:00:54,920 et ça va implémenter la morph "Calendar". 19 00:00:55,240 --> 00:00:57,760 Si on réinspecte cette morph, on peut voir dans le calendrier 20 00:00:58,080 --> 00:01:02,320 qu'on va avoir notre tab "Calendar" avec la CalendarMorph en dessous. 21 00:01:02,640 --> 00:01:05,280 Maintenant, on avait notre "HSVAColorMorph", 22 00:01:05,600 --> 00:01:06,480 donc je supprime ça. 23 00:01:06,800 --> 00:01:12,480 On va s'intéresser, plutôt, à "Morph new inspect". 24 00:01:12,800 --> 00:01:14,640 J'exécute ça, Cmd+D. 25 00:01:14,960 --> 00:01:18,560 On va voir notre Inspector, cette fois-ci, la morph va être ici. 26 00:01:18,880 --> 00:01:22,280 Et, si on regarde pour "Morph", 27 00:01:22,600 --> 00:01:25,400 on va avoir notre morph "gtInspectorMorphin", 28 00:01:25,720 --> 00:01:26,520 c'est intéressant, 29 00:01:26,840 --> 00:01:29,080 et si on regarde, on a effectivement ce qu'on veut. 30 00:01:29,400 --> 00:01:33,160 Donc, on a le titre de notre tab qui est ici, "Morph". 31 00:01:33,480 --> 00:01:37,200 On va avoir le display qui va nous présenter une morph 32 00:01:37,520 --> 00:01:41,520 et une gestion d'erreurs en dessous, si jamais la morph s'affiche mal. 33 00:01:41,840 --> 00:01:44,680 Et on a aussi deux actions : "exportAsPNG" et "delete", 34 00:01:45,000 --> 00:01:46,760 qu'on peut retrouver ici, dans l'Inspector. 35 00:01:47,080 --> 00:01:48,800 Donc, là, "Export as PNG" et "Delete". 36 00:01:49,120 --> 00:01:50,120 Ça, c'est intéressant. 37 00:01:50,440 --> 00:01:52,640 Une dernière chose qu'on va regarder, c'est, par exemple, 38 00:01:52,960 --> 00:01:55,640 comment ça gère les méthodes qui sont déjà compilées. 39 00:01:55,960 --> 00:01:58,480 Par exemple, si je regarde la méthode compilée 40 00:01:58,800 --> 00:02:01,760 de "Point>>#degrees", Cmd+I, j'inspecte, 41 00:02:02,080 --> 00:02:04,240 on a plusieurs onglets extrêmement intéressants : 42 00:02:04,560 --> 00:02:06,400 "Bytecode", "Source", 43 00:02:06,720 --> 00:02:08,480 la représentation intermédiaire, "Ir", 44 00:02:08,800 --> 00:02:10,360 "AST", c'est un arbre de syntaxe, 45 00:02:10,680 --> 00:02:12,960 "Header", "Meta" et deux autres onglets. 46 00:02:13,280 --> 00:02:15,840 Ce qui nous intéresse, c'est plutôt "Bytecode", "Source". 47 00:02:16,160 --> 00:02:19,640 Si, par exemple, j'ouvre deux fois celui-ci 48 00:02:19,960 --> 00:02:23,760 et que je place celui-là sur "Source" et celui-ci sur "Bytecode", 49 00:02:24,080 --> 00:02:26,000 je peux naviguer sur les deux à la fois. 50 00:02:26,320 --> 00:02:29,600 Quand je clique sur l'instruction "pushConstant:0", 51 00:02:29,920 --> 00:02:32,280 on peut voir que ça va être cette instruction ici. 52 00:02:32,600 --> 00:02:36,480 Si je clique sur "sent>=", "jumpFalse:100", 53 00:02:36,800 --> 00:02:41,920 on va avoir un retour direct à la fois entre le code source 54 00:02:42,240 --> 00:02:44,280 et le bytecode de notre méthode compilée. 55 00:02:44,600 --> 00:02:47,000 Donc, maintenant, si je regarde ça, 56 00:02:47,320 --> 00:02:52,800 je vais aller dans "CompiledCode", 57 00:02:53,120 --> 00:02:57,800 on va avoir "gtInspectorSource", ça, ça va être notre onglet "Source", 58 00:02:58,120 --> 00:03:00,720 ensuite, je vais avoir "gtInspector" 59 00:03:01,040 --> 00:03:03,600 pour la représentation intermédiaire "Ir". 60 00:03:03,920 --> 00:03:08,480 Ensuite, "gtInspectorAST", qui va être ici. 61 00:03:08,800 --> 00:03:10,240 Et "gtInspectorBytecode". 62 00:03:10,560 --> 00:03:12,160 On va avoir toutes nos différentes tabs 63 00:03:12,480 --> 00:03:15,000 qui sont définies avec la pragma "gtInspectorPresentationOrder". 64 00:03:15,320 --> 00:03:16,520 C'était une présentation 65 00:03:16,840 --> 00:03:20,360 de là où sont cachés ces onglets dans les objets qui les définissent.