<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8316328622623900385</id><updated>2024-08-28T03:11:04.642-05:00</updated><title type='text'>Desarrollando para iPhone</title><subtitle type='html'>Información sobre mi avance en desarrollo en Objective-C para iPhone y uso del API de Realidad Aumentada</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-4333195846023456054</id><published>2010-10-03T21:19:00.010-05:00</published><updated>2010-10-20T17:36:08.783-05:00</updated><title type='text'>Tutorial de VRPN+iPhone (tutorial 1)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;b&gt;He cambiado la dirección de este tutorial, puedes encontrarlo ahora aquí:&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://wwwest.uniandes.edu.co/%7Ed.wilches52/vrpn-and-iphone/&quot;&gt;http://wwwest.uniandes.edu.co/~d.wilches52/vrpn-and-iphone/&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;b&gt;This tutorial has moved ! &lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;You can find it here: &lt;a href=&quot;http://wwwest.uniandes.edu.co/%7Ed.wilches52/vrpn-and-iphone/index-EN.html&quot;&gt;http://wwwest.uniandes.edu.co/~d.wilches52/vrpn-and-iphone/index-EN.html&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/4333195846023456054/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/10/tutorial-de-vrpniphone.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/4333195846023456054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/4333195846023456054'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/10/tutorial-de-vrpniphone.html' title='Tutorial de VRPN+iPhone (tutorial 1)'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-3810668513083795778</id><published>2010-03-06T15:17:00.003-05:00</published><updated>2010-03-06T15:38:24.882-05:00</updated><title type='text'>Propiedades en Objective C 2.0</title><content type='html'>Hola,&lt;br /&gt;
&lt;br /&gt;
Les dejo un recurso para aprender un poco más sobre el manejo de propiedades en Objective-C:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.cocoacast.com/?q=node/103&quot;&gt;Properties in Objective-C 2.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Chao!</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/3810668513083795778/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/03/propiedades-en-objective-c-20.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/3810668513083795778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/3810668513083795778'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/03/propiedades-en-objective-c-20.html' title='Propiedades en Objective C 2.0'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-4519558125533730629</id><published>2010-03-06T13:38:00.004-05:00</published><updated>2010-03-06T15:41:19.000-05:00</updated><title type='text'>Primer programa con OpenGL y Cocoa Touch a la vez !</title><content type='html'>Hola,&lt;br /&gt;
&lt;br /&gt;
Aquí les dejo mi primer programa usando OpenGL y elementos gráficos de Cocoa Touch en iPhone.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7LDQ0mVMEefkvHCJx3ldt5HpXnsRA5hyphenhyphenZbUG9yRgLpIutIIYUmlXmj9V0WawulxHsDpXLicLOuQTUyyfD3Xyie-hhCU8bzlPcniCi4khb1wPQawy3SHNGez1LoRWdzY1MoD-ihdvbZg/s1600-h/OGLTest.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7LDQ0mVMEefkvHCJx3ldt5HpXnsRA5hyphenhyphenZbUG9yRgLpIutIIYUmlXmj9V0WawulxHsDpXLicLOuQTUyyfD3Xyie-hhCU8bzlPcniCi4khb1wPQawy3SHNGez1LoRWdzY1MoD-ihdvbZg/s320/OGLTest.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Esto se logra usando dos UIView diferentes: uno para la barra de botones, y el otro para todo lo que sea OpenGL.&lt;br /&gt;
&lt;br /&gt;
El código fuente se encuentra &lt;a href=&quot;http://sites.google.com/site/dwilches/blogfiles/OGLTest.zip?attredirects=0&amp;amp;d=1&quot;&gt;aquí&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;strike&gt;Por favor no me juzguen por la organización del código ... cuando hago una &quot;prueba de concepto&quot; no soy muy ordenado ...&lt;/strike&gt;&lt;br /&gt;
&lt;br /&gt;
Para realizar esta prueba me base en estos recursos:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html&quot;&gt;OpenGL OS Programming Guide for iPhone OS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://iphonedevelopment.blogspot.com/2009/04/opengl-es-from-ground-up-part-2-look-at.html&quot;&gt;OpenGL ES From the Ground Up, Part 2: A Look at Simple Drawing&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;Además veo que me serán muy útiles:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html&quot;&gt;OpenGL ES From the Ground Up: Table of Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://maniacdev.com/2009/10/18-opengl-es-resources-that-you-must-know/&quot;&gt;18 OpenGL ES Resources That You Must Know&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Chao !</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/4519558125533730629/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/03/primer-programa-con-opengl-y-cocoa.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/4519558125533730629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/4519558125533730629'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/03/primer-programa-con-opengl-y-cocoa.html' title='Primer programa con OpenGL y Cocoa Touch a la vez !'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7LDQ0mVMEefkvHCJx3ldt5HpXnsRA5hyphenhyphenZbUG9yRgLpIutIIYUmlXmj9V0WawulxHsDpXLicLOuQTUyyfD3Xyie-hhCU8bzlPcniCi4khb1wPQawy3SHNGez1LoRWdzY1MoD-ihdvbZg/s72-c/OGLTest.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-3123409297531648410</id><published>2010-02-27T16:25:00.000-05:00</published><updated>2010-02-27T16:25:41.689-05:00</updated><title type='text'>OpenGL for Embedded Systems</title><content type='html'>Hola,&lt;br /&gt;
&lt;br /&gt;
El siguiente paso para investigar sobre cada tecnologia que necesito usar en mi tesis:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html&quot;&gt;OpenGL ES Programming Guide for iPhone OS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Próxima semana: cargar algo en OpenGL al mismo tiempo que objetos de UI propios de iPhone.&lt;br /&gt;
&lt;br /&gt;
Chao !</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/3123409297531648410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/02/opengl-for-embedded-systems.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/3123409297531648410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/3123409297531648410'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/02/opengl-for-embedded-systems.html' title='OpenGL for Embedded Systems'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-6619466726743038607</id><published>2010-02-27T16:15:00.000-05:00</published><updated>2010-02-27T16:15:36.546-05:00</updated><title type='text'>Descargando archivos por HTTP</title><content type='html'>Hola,&lt;br /&gt;
&lt;br /&gt;
Aquí coloco un ejemplo de cómo descargar archivos por HTTP, este usa la clase NSURL y obtiene todos los bytes de la página Web indicada de manera asíncrona.&lt;br /&gt;
&lt;br /&gt;
Este ejemplo muestra que los datos se pueden ir recibiendo por fragmentos en nuestra aplicación (tan pronto estén disponibles), es decir, no hay que esperar a que llegue todo el contenido de la página para poder tener acceso a ella.&lt;br /&gt;
&lt;br /&gt;
La referencia de Apple en la que me basé fue la siguiente:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html&quot;&gt;URL Loading System: Introduction to URL Loading System&lt;/a&gt; (en especial: &lt;a href=&quot;http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html&quot;&gt;URL  Loading System: Using NSURLConnection&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html&quot;&gt;NSURL Class Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
El código fuente se encuentra &lt;a href=&quot;http://sites.google.com/site/dwilches/blogfiles/URLDownloadSample.zip?attredirects=0&amp;amp;d=1&quot;&gt;aquí&lt;/a&gt; y la aplicación se vé así:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCfWMcP-RKTv2PaeGtf8TNRS0n4K_-VBla6tnDdj0J8XNSI-BhSS1Dr6fZPS4GtqewC5IJ5r7S9ybcfgWERA9qdCQbOT5j_vrWiIhdOYk595vAql8RR-G9W-k-1ak6sgy1CAJyYXrquw/s1600-h/NSURLConnection.simulador.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCfWMcP-RKTv2PaeGtf8TNRS0n4K_-VBla6tnDdj0J8XNSI-BhSS1Dr6fZPS4GtqewC5IJ5r7S9ybcfgWERA9qdCQbOT5j_vrWiIhdOYk595vAql8RR-G9W-k-1ak6sgy1CAJyYXrquw/s320/NSURLConnection.simulador.png&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMARqlvh6FfJxvXykDryITK8d45A_1uiz4LMJn8edJXs2DCWY5JCrSubQhyXewMQOLXco6v5JBreVZox9NmJXcZ1YFGndClpn8m37wTO7RI-lQEbSSfoWS4a2h1K95FzB65Q46sLbVJg/s1600-h/NSURLConnection.console.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMARqlvh6FfJxvXykDryITK8d45A_1uiz4LMJn8edJXs2DCWY5JCrSubQhyXewMQOLXco6v5JBreVZox9NmJXcZ1YFGndClpn8m37wTO7RI-lQEbSSfoWS4a2h1K95FzB65Q46sLbVJg/s320/NSURLConnection.console.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Chao !</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/6619466726743038607/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/02/descargando-archivos-por-http.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/6619466726743038607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/6619466726743038607'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/02/descargando-archivos-por-http.html' title='Descargando archivos por HTTP'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCfWMcP-RKTv2PaeGtf8TNRS0n4K_-VBla6tnDdj0J8XNSI-BhSS1Dr6fZPS4GtqewC5IJ5r7S9ybcfgWERA9qdCQbOT5j_vrWiIhdOYk595vAql8RR-G9W-k-1ak6sgy1CAJyYXrquw/s72-c/NSURLConnection.simulador.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-7280689706242196957</id><published>2010-02-14T12:29:00.002-05:00</published><updated>2010-02-14T12:38:24.382-05:00</updated><title type='text'>Tutorial 2: Hola Mundo++</title><content type='html'>Hola,&lt;br /&gt;
&lt;br /&gt;
Hoy voy a mostrar como hacer interacción con elementos de la GUI, particularmente con un botón.&lt;br /&gt;
&lt;br /&gt;
La interfaz a desarrollar es esta:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwPq7jhPfRds_xkTrhogRkijiemnlM3TC4TZATxaycq8ShFyp6TEbM7tbsp5Bc8sQLFoqghAFMMWezuGBQ7uFfJFPPbagvxRTcVSM8gIm6omVllTfI3tTDpjJaTbSXa3BglmjkTiKFjA/s1600-h/Resumen.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwPq7jhPfRds_xkTrhogRkijiemnlM3TC4TZATxaycq8ShFyp6TEbM7tbsp5Bc8sQLFoqghAFMMWezuGBQ7uFfJFPPbagvxRTcVSM8gIm6omVllTfI3tTDpjJaTbSXa3BglmjkTiKFjA/s320/Resumen.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;En esta aplicación hay un botón que dice &quot;Hola Mundo&quot; y al darle click queremos que cambie a &quot;Hello World&quot;, al darle click de nuevo queremos que cambie a &quot;Hola Mundo&quot; otra vez, y así sucesivamente.&lt;br /&gt;
&lt;br /&gt;
El código fuente del &lt;i&gt;Tutorial 1&lt;/i&gt; nos servirá como punto de partida, por lo que en este tutorial solamente vamos a explicar las conexiones que debemos hacer para que nuestro botón ejecute una pieza de código que modifica el texto contenido dentro del mismo botón.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Cambios en el código fuente&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Primero, como dentro de nuestro código vamos a tener que modificar un elemento de la GUI necesitamos crear un atributo dentro de nuestra clase &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;HelloWorldView.h&lt;/span&gt; que permita referenciar al elemento gráfico. Esto se logra creando un atributo de tipo &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;UIButton*&lt;/span&gt; así:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;UIButton *button;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Y declarando una propiedad con el mismo nombre y anotada con &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;IBOutlet&lt;/span&gt; así:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;@property (nonatomic,retain) &lt;b&gt;IBOutlet&lt;/b&gt; UIButton *button;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;
Pero como además vamos a necesitar llamar a nuestro código fuente desde una acción del botón de la GUI, necesitamos declarar una función callback (como un listener de Java), de esta manera:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;- (IBAction)buttonCallback:(id)sender;&lt;/div&gt;&lt;br /&gt;
Hasta aquí no hemos creado conexiones pero la idea es que:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Cuando queramos cambiar desde el código el texto deel botón de la GUI usemos nuestra propiedad &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;button&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Cuando queramos invocar desde nuestro botón de la GUI el código fuente de la aplicación usaremos la función &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;buttonCallback&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;Resumiendo, el código fuente es este:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhjqMlxyjlvK0Oh3rTJwSNGf_NyX6BI2HJax_yFC-wnzCLy2MY8WC2c91_p0LMnHHna4fgzxMajzKkw8Z-nt9ZlUsmfZ5GbSteXv_gVOxkeod5d74-SMbM0_4PMrc9dUyHP4sGXLD3Iw/s1600-h/Screen+shot+2010-01-30+at+3.08.41+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhjqMlxyjlvK0Oh3rTJwSNGf_NyX6BI2HJax_yFC-wnzCLy2MY8WC2c91_p0LMnHHna4fgzxMajzKkw8Z-nt9ZlUsmfZ5GbSteXv_gVOxkeod5d74-SMbM0_4PMrc9dUyHP4sGXLD3Iw/s320/Screen+shot+2010-01-30+at+3.08.41+PM.png&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Pero si recordamos,&amp;nbsp; al modificar el &quot;.h&quot; sólo declaramos las propiedades y funciones, mas no las implementamos (el &quot;qué hacen&quot; mas no el &quot;cómo lo hacen&quot;), por lo cual necesitamos modificar también nuestro &quot;.m&quot; para realizar las respectivas implementaciones.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Vamos a crear en &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;HelloWorldView.m&lt;/span&gt; la función &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;buttonCallback&lt;/span&gt;, tal como se muestra en la siguiente imagen, además de sintetizar nuestra propiedad &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;button&lt;/span&gt; (recuerdan el &lt;a href=&quot;http://dwilches.blogspot.com/2010/02/explicacion-del-codigo-fuente-de-hola.html&quot;&gt;código fuente del tutorial 1&lt;/a&gt;?).&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;También es de tener en cuenta que estamos decrementando el conteo de referencias de nuestra propiedad &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;button&lt;/span&gt; en el método &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;dealloc&lt;/span&gt;.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6UjPwEQEXfKxA50B4GndcKe9O60KZLfCSukwZLF1K3DDBenkP0F6THeAm8tS95ncGfEkaHXHiREyaBzwWP8h3br3vPqUIk-ysle0XXIhZTQ20AcPweyaCnBg0YPMJ5Yh3ySrJY7697w/s1600-h/Screen+shot+2010-01-30+at+3.08.25+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6UjPwEQEXfKxA50B4GndcKe9O60KZLfCSukwZLF1K3DDBenkP0F6THeAm8tS95ncGfEkaHXHiREyaBzwWP8h3br3vPqUIk-ysle0XXIhZTQ20AcPweyaCnBg0YPMJ5Yh3ySrJY7697w/s320/Screen+shot+2010-01-30+at+3.08.25+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
La función que acabamos de crear usa algunos mensajes que no conocemos:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;button:titleForState&lt;/span&gt;&lt;br /&gt;
Este mensaje obtiene el texto que aparece dentro del botón. El &quot;estado&quot; al que hace referencia este método es uno de varios posibles estados en que el botón puede estar (&quot;desactivado&quot; por ejemplo). El valor retornado es un &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;NString&lt;/span&gt;, por lo que para comporarlo con otro &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;NSString&lt;/span&gt; se debe usar el método &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;NSString:compare:&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;button:setTitle::forState&lt;/span&gt;&lt;br /&gt;
Este método es el compañero del anterior, en vez de obtener el texto del botón, lo cambia.&lt;/li&gt;
&lt;/ul&gt;No voy a explicar la lógica del método pues es sólo darle una mirada y ya.&lt;br /&gt;
&lt;br /&gt;
Listo, todo el andamiaje de código fuente está terminado, ahora falta construir la respectiva parte en la GUI.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Modificación de la GUI&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Recuerdan el &quot;Interface Builder&quot; ? Bueno pues necesitamos abrirlo y seleccionar nuestro botón. Aquí lo que vamos a hacer es decirle a nuestro botón &quot;cuando alguien te &quot;toque adentro&quot; debes invocar el método &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;buttonCallback&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Hacer esto es fácil con el &quot;Interface Builder&quot; pues es sólo&lt;i&gt; Drag n Drop&lt;/i&gt;. Seleccionamos entonces neustro botón y en la ventana &quot;&lt;i&gt;Button Components&lt;/i&gt;&quot; deben mostrarse todas las posibilidades de acciones que el botón puede realizar, vamos a buscar a &quot;&lt;i&gt;Touch up inside&lt;/i&gt;&quot; y vamos a tomar el círculo a su derecha y arrastrarlo hasta el elemento &quot;&lt;i&gt;File&#39;s owner&lt;/i&gt;&quot; de la ventana &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;HelloWorldView.xib&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Esto suena complicado, por lo cual lo muestro gráficamente en esta imagen:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMZihbQHvK85t-ughe7MvFWcxDG3DcCrRWXIB38gQadfyUtvjHP24swjHIvSmizq5ktIMgp3ZSoMYX95pf1Cm0Z90lfqwq8LAw0jRN68LgmKccieYJDdZBlO1JCBT1PeRhM-TPXhLaGw/s1600-h/Screen+shot+2010-01-30+at+2.55.30+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMZihbQHvK85t-ughe7MvFWcxDG3DcCrRWXIB38gQadfyUtvjHP24swjHIvSmizq5ktIMgp3ZSoMYX95pf1Cm0Z90lfqwq8LAw0jRN68LgmKccieYJDdZBlO1JCBT1PeRhM-TPXhLaGw/s320/Screen+shot+2010-01-30+at+2.55.30+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Listo, ya creamos la conexión entre nuestro botón y la función &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;buttonCallback&lt;/span&gt; que creamos antes.&lt;br /&gt;
&lt;br /&gt;
Pero aún falta la configuración para que nuestra propiedad &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;button&lt;/span&gt; referencie al botón real, esto lo hacemos de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzKHZpWPGwY36kne2JI3ieJsl7kv3fhTOS1X-EljCtYhvgmaEJ-v5I9ZXRBBjPJxT9473hKII6eitjWEq1TBvePoVjVOWM2U9kuNqNFHHnRDRmEH9XXsyKc38Ma-wyp2apUcJOkmtlzQ/s1600-h/Screen+shot+2010-01-30+at+2.57.27+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzKHZpWPGwY36kne2JI3ieJsl7kv3fhTOS1X-EljCtYhvgmaEJ-v5I9ZXRBBjPJxT9473hKII6eitjWEq1TBvePoVjVOWM2U9kuNqNFHHnRDRmEH9XXsyKc38Ma-wyp2apUcJOkmtlzQ/s320/Screen+shot+2010-01-30+at+2.57.27+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Aquí estamos asignando a &quot;&lt;i&gt;New Referencing Outlet&lt;/i&gt;&quot; de nuevo a &quot;&lt;i&gt;File&#39;s Owner&lt;/i&gt;&quot;, y cuando nos aparezca la ventana para elegir la propiedad a la que queremos asignar la referencia, escogeremos &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;button&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Al final nuestra ventana debe quedar así:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnzY5vm1f0jkgiBrfOM803wBz_lP1w6ZCuk6-ENHYI4cjIeOgxygG5UNLepwz63nOYLM6GBNCQHs1PTawbewuaoCynkB7_tB0PbJxBUD6BqOJdfwwr4lI32yPlDWXKDUfKRpnTtT4pzA/s1600-h/Screen+shot+2010-01-30+at+2.57.15+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnzY5vm1f0jkgiBrfOM803wBz_lP1w6ZCuk6-ENHYI4cjIeOgxygG5UNLepwz63nOYLM6GBNCQHs1PTawbewuaoCynkB7_tB0PbJxBUD6BqOJdfwwr4lI32yPlDWXKDUfKRpnTtT4pzA/s320/Screen+shot+2010-01-30+at+2.57.15+PM.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Listo, ahora si eso es todo. Sólo falta ejecutar la aplicación y dar click en el botón varias veces para ver como cambia su texto cada vez.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://sites.google.com/site/dwilches/blogfiles/HelloWorld%2B%2B.zip?attredirects=0&amp;amp;d=1&quot;&gt;Dé click aquí para descargar el código fuente de este tutorial &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Chao, hasta la próxima !</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/7280689706242196957/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/02/tutorial-2-hola-mundo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/7280689706242196957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/7280689706242196957'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/02/tutorial-2-hola-mundo.html' title='Tutorial 2: Hola Mundo++'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwPq7jhPfRds_xkTrhogRkijiemnlM3TC4TZATxaycq8ShFyp6TEbM7tbsp5Bc8sQLFoqghAFMMWezuGBQ7uFfJFPPbagvxRTcVSM8gIm6omVllTfI3tTDpjJaTbSXa3BglmjkTiKFjA/s72-c/Resumen.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-2716464882228749345</id><published>2010-02-09T20:16:00.001-05:00</published><updated>2010-02-09T20:17:16.317-05:00</updated><title type='text'>Explicación del código fuente de Hola Mundo</title><content type='html'>Hola,&lt;br /&gt;
&lt;br /&gt;
Hoy explico el código fuente del programa &quot;&lt;a href=&quot;http://dwilches.blogspot.com/2010/01/tutorial-1-hola-mundo.html&quot;&gt;Hola Mundo&lt;/a&gt;&quot;.&lt;br /&gt;
Para esto posiblemente sea necesario conocer algo de C++ y Java ...&lt;br /&gt;
&lt;br /&gt;
Recordemos el código del archivo &quot;HelloWorldAppDelegate.h&quot;:&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpEtFvW8fEhxyT0xEqNkJrztePcj5kf64RtkfRsr-gAZ9rNiMVThk7S1D8s71Ln8hvg8ykffvfPvuKNLYXZo1TX2VS_Kik75xGx8u_68fbkzVxVjL6HJ7R9M6f_HiORHN6XGsggyG2xQ/s1600-h/15.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpEtFvW8fEhxyT0xEqNkJrztePcj5kf64RtkfRsr-gAZ9rNiMVThk7S1D8s71Ln8hvg8ykffvfPvuKNLYXZo1TX2VS_Kik75xGx8u_68fbkzVxVjL6HJ7R9M6f_HiORHN6XGsggyG2xQ/s320/15.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Vamos a recorrer el archivo explicando qué es cada línea:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;En Objective-C los comentarios de una sola línea comienzan por // tal como en Java y C++. Así que las primeras 7 líneas son sólo comentarios.&lt;/li&gt;
&lt;li&gt;La siguiente línea es una sentencia &quot;import&quot; tal como las de C++. Estas se usan para incluir el contenido compelto de un archivo (en este caso UIKit/UIKit.h) dentro del archivo que usa la sentencia import. Esto sirve para poder usar funciones, clases, variables, etc,. que están declaradas en esos archivos que estamos importando.&lt;/li&gt;
&lt;li&gt;En la siguiente línea comenzamos hacemos un &quot;forward-reference&quot;:&lt;span style=&quot;color: magenta;&quot;&gt; &lt;/span&gt;@class HelloWorldView; La cual es análoga a la sentencia &quot;class HelloWorldView;&quot; de C++. Esta sentencia se usa para indicar que dentro del código vamos a hacer referencia a una clase llamada HelloWorldView, pero tan sólo estamos diciendo que esa clase &quot;existe en algún lugar&quot;, sin decir qué métodos o atributos tiene. En Java no hay necesidad de hacer tal cosa.&lt;/li&gt;
&lt;li&gt;La sentencia &quot;@interface&quot; sirve para declarar una clase. Aquí sólo decimos qué atributos, propiedades y métodos tiene la clase, más no decimos qué hace cada uno de esos métodos. A diferencia de C++ y Java, la declaración de la calse no acaba en cuanto cerramos la llave de la declaración. La declaración de una clase en Objective-C va desde la sentencia &quot;@interface&quot; hasta la sentencia &quot;@end&quot;. Las llaves que hay en medio son solamente para declarar los atributos de la calse, pero fíjense que propiedades se declaran por fuera (los métodos también pero en este ejemplo no hay ninguno).&lt;/li&gt;
&lt;li&gt;En C++ y Objective-C los punteros a objetos se declaran de la misma manera:&lt;span style=&quot;color: #45818e;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;HelloWorldView&lt;/span&gt; *myView; La declaración equivalente en Java sería:&lt;span style=&quot;color: #45818e;&quot;&gt; HelloWorldView&lt;/span&gt; myView; En cualquier caso, esto indica que estamos declarando una variable que contendrá una referencia a un objeto de clase HelloWorldView. En esta clase se declaran dos punteros (o referencias si venimos del munod Java).&lt;/li&gt;
&lt;li&gt;Ahora continuamos con la declaración de las propiedades, para los que conocen de .NET, se trata del mismo tipo de propiedades. Una propiedad no es más que una maenra de ahorrarnos la esccritura de un código repetitivo: se le indica al compilador que debe crear un método &quot;get&quot; y un método &quot;set&quot; para una variable de nuestra clase, de modo que quede totalmente encapsulada. Debido a que el get y el set pueden ser implementados de muchas maneras diferentes, debemos decirle al compilador de qué forma queremos que los implemente. Para esto se usan las palabras &quot;nonatomic&quot; y &quot;retain&quot;. &quot;nonatomic&quot; la explicaré más adelante. &quot;retain&quot; indica que al momento de hacer la asignación del atribuyto de nuestra clase, debemos decrementar el conteo de referencias de este atributo. Para los que vienen de Java, el conteo de referencias es algo automático, eprop para quienes vienen de C++ sabrán el problema que es decidir si una clase es dueña de una referencia, o si el dueño es otro, y quién es responsable de liberar la memoria del objeto referenciado. Objective-C usa una aproximación entre la de Java y C++, en la que se usa el conteo de referencias, pero el programador debe decir exactamente cuándo debe incrementar o decrementar dicho conteo.&lt;/li&gt;
&lt;/ul&gt;&lt;span style=&quot;color: magenta;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
Ahora vamos para el segundo archivo de código fuente que modificamos, &quot;HelloWorldAppDelegate.m&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Cq4YMxbraDAPdIYx-H0y7aEc83NmARs2TeGiFz0RP7tQ4fsOmfkNQyahQTX8UaP-5X0zpDhkvSbg-O-BIYJ8CZRr0u71aullGLRpE21lv3BvL8iF4vOC7JUDcq8jsX-oIwKGOGk0HQ/s1600-h/17.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Cq4YMxbraDAPdIYx-H0y7aEc83NmARs2TeGiFz0RP7tQ4fsOmfkNQyahQTX8UaP-5X0zpDhkvSbg-O-BIYJ8CZRr0u71aullGLRpE21lv3BvL8iF4vOC7JUDcq8jsX-oIwKGOGk0HQ/s320/17.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Este archivo es la implementación de la clase que declaramos en &quot;HelloWorldAppDelegate.h&quot;.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;De nuevo, sentencias import para traer el contenido de otros archvios necesarios para la compilación.&lt;/li&gt;
&lt;li&gt;La sentencia &quot;@implementation&quot; indica que vamos a implementar una clase. Esta sentencia termina cuando encontramos la sentencia &quot;@end&quot;. Dentro de estas sentencias debemos sintetizar las propiedades y declarar los métodos (sinteti...qué?).&lt;/li&gt;
&lt;li&gt;La sintetización de las propiedades no es más que ordenarle al compilador que cree en ese momento los métodos &quot;get&quot; y &quot;set&quot; de cada propiedad que hayamos declarado. Recordemos que en el &quot;.h&quot; sólo declaramos las propiedades, pero todos los métodos (incluidos los get y los set) deben ser implementados en el &quot;.m&quot;. Hay que poner especial cuidado a que la sentencia no es &quot;@synthe&lt;b&gt;t&lt;/b&gt;ize&quot; sino &quot;@synthe&lt;b&gt;s&lt;/b&gt;ize&quot;, osea, no es como en el español.&lt;/li&gt;
&lt;li&gt;La siguiente línea es:&lt;br /&gt;
- (void) applicationDidFinishLaunching:(UIApplication*)application {&lt;br /&gt;
Así comienza la implementación de un método en Objective-C, el equivalente en C++ y Java sería algo como:&lt;br /&gt;
void applicationDidFinishLaunching(UIApplication* application) {&lt;br /&gt;
Bueno, sin el &quot;*&quot; en Java.&lt;/li&gt;
&lt;li&gt;Para invocar a los métodos en Objective-C (enviar mensajes le llaman en este lenguaje) se usan los corchetes, por tanto la siguiente línea invoca 4 métodos diferentes, todos en una línea (cada invocación es el uso de un &quot;[&quot; y un &quot;]&quot;).&lt;br /&gt;
El primer método que se está ejecutando es &quot;[HelloWorldView alloc]&quot;. Este es un método estático de la clase &quot;HelloWorldView&quot;, el cual funciona como el &quot;malloc&quot; en C++. Normalmente para crear un objeto uno usaría &quot;new&quot; en Java y C++, este &quot;new&quot; realiza la obtención de la memoria para el nuevo objeto e invoca al constructor.&lt;br /&gt;
Bueno, en Objective-C no hay &quot;new&quot; por lo que toca hacer ambos pasos descritos anteriormente por separado: primero obtenemos la memoria para el nuevo objeto (con el &quot;alloc&quot;) y luego invocamos al constructor del objeto para que inicialice su estado interno (atributos).&lt;br /&gt;
El constructor aquí se llama &quot;initWithMibName:bundle:&quot; el cual es un constructor con dos parámetros, uno se llama &quot;initWithMibName&quot; y el otro se llama &quot;bundle&quot;. Aquí comienzan a aparecer diferencias significativas con Java y C++ ...&lt;/li&gt;
&lt;li&gt;No voy a explicar lo que hace cada uno de esos métodos (mensajes) a excepción de &quot;autorelease&quot;. Este es un mensaje que se le envía a un objeto apra decrementar su conteo interno de referencias, de modo que su memoria sea liberada en el futuro (cuándo? aquí con futuro me refiero a ... leer &lt;a href=&quot;http://developer.apple.com/mac/library/documentation/cocoa/reference/Foundation/Classes/NSAutoreleasePool_Class/Reference/Reference.html&quot;&gt;NSAutoreleasePool&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Por último, el método &quot;dealloc&quot; es el que se llama justo antes de que un objeto sea destruido (cuando su conteo de referencias llega a 0). Aquí se liberan los recursos que haya adquirido el objeto. Es similar al &quot;finalize&quot; en Java y al destructor en C++.&lt;/li&gt;
&lt;/ul&gt;Bueno, no es más para la explicación del código de la primer aplicación, la próxima vez colocaré una aplicación más compleja para demostrar cómo se hace la interacción con elementos gráficos de la UI.&lt;br /&gt;
&lt;br /&gt;
Chao !</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/2716464882228749345/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/02/explicacion-del-codigo-fuente-de-hola.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/2716464882228749345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/2716464882228749345'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/02/explicacion-del-codigo-fuente-de-hola.html' title='Explicación del código fuente de Hola Mundo'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpEtFvW8fEhxyT0xEqNkJrztePcj5kf64RtkfRsr-gAZ9rNiMVThk7S1D8s71Ln8hvg8ykffvfPvuKNLYXZo1TX2VS_Kik75xGx8u_68fbkzVxVjL6HJ7R9M6f_HiORHN6XGsggyG2xQ/s72-c/15.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-5891504890732311070</id><published>2010-02-01T11:35:00.018-05:00</published><updated>2010-02-01T11:35:00.435-05:00</updated><title type='text'>Recursos para programadores de iPhone</title><content type='html'>Hola de nuevo,&lt;br /&gt;
&lt;br /&gt;
Este pequeño post es para dejarles unas rutas de donde se puede obtener información acerca de la programación en iPhone. Todas son oficiales de Apple:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://developer.apple.com/iphone/&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYrddHfGwpQ2kM6JakDeUHyNu7AdIQbeqs6OvCvSczqK-fuqi4fabg4Fy7swobZhk74TV58txmF8r-vVCioolgmi0oYmDkbkbhiTChJ_Db8vyYdmXladq913IVMfVAShUz5uoBxzdUuQ/s320/header.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;El &lt;a href=&quot;http://developer.apple.com/iphone/&quot;&gt;iPhone Developer Center&lt;/a&gt; es la principal fuente de documentación.&lt;br /&gt;
De aquí podemos descargar el Xcode y el iPhone SDK (en caso de que no los tengamos ya instalados), además de documentación para comenzar a aprender a programar para iPhone. &lt;br /&gt;
&lt;br /&gt;
Bueno, aquí les dejo los enlaces:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/Xcode/Conceptual/iphone_development/100-iPhone_Development_Quick_Start/iphone_development_quick_start.html#//apple_ref/doc/uid/TP40007959-CH3-SW1&quot;&gt;iPhone Development Quick Start&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/referencelibrary/GettingStarted/GS_iPhoneGeneral/index.html&quot;&gt;Getting Started with iPhone OS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/&quot;&gt;Learning Objective-C: A Primer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html&quot;&gt;Introduction to The Objective-C Programming Language&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Chao!</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/5891504890732311070/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/02/recursos-para-programadores-de-iphone.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/5891504890732311070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/5891504890732311070'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/02/recursos-para-programadores-de-iphone.html' title='Recursos para programadores de iPhone'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYrddHfGwpQ2kM6JakDeUHyNu7AdIQbeqs6OvCvSczqK-fuqi4fabg4Fy7swobZhk74TV58txmF8r-vVCioolgmi0oYmDkbkbhiTChJ_Db8vyYdmXladq913IVMfVAShUz5uoBxzdUuQ/s72-c/header.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-4853414395631557270</id><published>2010-01-30T23:19:00.003-05:00</published><updated>2010-01-31T14:32:40.257-05:00</updated><title type='text'>Tutorial 1: Hola Mundo</title><content type='html'>Hola a todos!&lt;br /&gt;
&lt;br /&gt;
Hoy voy a mostrar cómo se crea una aplicación para iPhone desde 0.&lt;br /&gt;
&lt;br /&gt;
Para mayor información recomiendo mirar la siguiente documentación oficial de Apple:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/referencelibrary/GettingStarted/Creating_an_iPhone_App/index.html&quot;&gt;Creating an iPhone Application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhone101/Articles/00_Introduction.html&quot;&gt;Your first iPhone application&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;En este tutorial vamos a crear la siguiente aplicación: &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFLwHRMOBtKY9BCf1rxNfvK9q9BcZHVY0wGVbg5cL_hkDXqPTXm-UqM89B6kaEFrlMUZK_ioptVXWHJiPpk0a7rxFRRAWxwkIpyCTxCaGBLWlGTbSmV9cdRCyy7HIWZFOa2EAyaLhu6w/s1600-h/HolaMundo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFLwHRMOBtKY9BCf1rxNfvK9q9BcZHVY0wGVbg5cL_hkDXqPTXm-UqM89B6kaEFrlMUZK_ioptVXWHJiPpk0a7rxFRRAWxwkIpyCTxCaGBLWlGTbSmV9cdRCyy7HIWZFOa2EAyaLhu6w/s320/HolaMundo.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Esta aplicación se compone de un botón con el texto &quot;Hola Mundo&quot;, que al ser presionado ... no hace nada. Este es el ejemplo más sencillo de aplicación en iPhone.&lt;br /&gt;
&lt;br /&gt;
Puede dar click sobre las imágenes de este tutorial para ver la imagen en su tamaño real.&lt;br /&gt;
&lt;br /&gt;
En el tutorial 2 mostraré cómo darle algún comportamiento a ese botón.&lt;br /&gt;
&lt;br /&gt;
Comencemos ...&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Introducción&lt;/span&gt; &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Xcode es la herramienta de desarrollo que usaremos para crear aplicaciones para iPhone. En esta herramienta crearemos el código, e invocaremos al editor de GUI (Interface Builder) y al simulador (iPhone Simulator 3.0) para probar nuestras aplicaciones sin tener que pasarlas a un iPhone real.&lt;br /&gt;
&lt;br /&gt;
Más información sobre Xcode &lt;a href=&quot;http://developer.apple.com/technology/tools.html&quot;&gt;aquí&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Xcode se puede ejecutar desde el menú de aplicaciones o desde el Dock:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYqJRXJiNOW0r-dNRVTz4jXqKowHI2j9xsWZAzuRPYdcq0ZRs7VTfXCMc4k83bKbbUPJpfabGMEurACaGY7pfS9FZvFZbks725lrDiz4umtxsJ_0t-_56iGkGfCI3Ka4vugDKnX2-hEw/s1600-h/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYqJRXJiNOW0r-dNRVTz4jXqKowHI2j9xsWZAzuRPYdcq0ZRs7VTfXCMc4k83bKbbUPJpfabGMEurACaGY7pfS9FZvFZbks725lrDiz4umtxsJ_0t-_56iGkGfCI3Ka4vugDKnX2-hEw/s320/1.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Cuando ejecutemos Xcode no veremos la ventana de un IDE, sino tan sólo el nombre de la aplicación en la barra de Mac:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjznKZy8ox116OcaTqoGy_MztHxNV_O3xcoS65lKDJc7AwTFtk1sWzd9-a_aeBGhAGokbIeMWYRHdpHpf_F6lpS8beJ8OKaJouL3FIl78qG64c_r3cnLmBHQdvuPSLi3fwUhjBEMEg8eQ/s1600-h/2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjznKZy8ox116OcaTqoGy_MztHxNV_O3xcoS65lKDJc7AwTFtk1sWzd9-a_aeBGhAGokbIeMWYRHdpHpf_F6lpS8beJ8OKaJouL3FIl78qG64c_r3cnLmBHQdvuPSLi3fwUhjBEMEg8eQ/s320/2.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Ahora debemos abrir una ventana del IDE mediante la creación de un proyecto nuevo: File + &quot;New Project...&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJr40ILfXRAxE4UfRnG3I_FsPIPkYefPWWSe8dcdTQlz5BExUBytMar4Yb4s8BIsTV3Ma4ywddLMOXbdFfNU4I6MNvCltOC5s_qpxoxy6o3AZlYeOIJKh9w7KMf2W2NTnVkP9NxoxteQ/s1600-h/3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJr40ILfXRAxE4UfRnG3I_FsPIPkYefPWWSe8dcdTQlz5BExUBytMar4Yb4s8BIsTV3Ma4ywddLMOXbdFfNU4I6MNvCltOC5s_qpxoxy6o3AZlYeOIJKh9w7KMf2W2NTnVkP9NxoxteQ/s320/3.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Luego veremos aparecer una ventana similar a la siguiente, donde se nos pide que seleccionemos el tipo de proyecto que queermos crear. Seleccionaremos &quot;Window-based Application&quot;.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIH6eP_qgPEW3ccZV6wqXuX-5oVsy5YNJIUkToCVAsr1jZtbiKrKFapxsYlfihDWbHzQe6HUiFRElJO8sQe44hPDhqStukAVB_Q68JMnVaP1VZmbRSNZ7SNcvP-kmB9nOYiLzK2y9mmg/s1600-h/4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIH6eP_qgPEW3ccZV6wqXuX-5oVsy5YNJIUkToCVAsr1jZtbiKrKFapxsYlfihDWbHzQe6HUiFRElJO8sQe44hPDhqStukAVB_Q68JMnVaP1VZmbRSNZ7SNcvP-kmB9nOYiLzK2y9mmg/s320/4.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Escribimos el nombre del proyecto en el campo correspondiente y damos click en &quot;Save&quot;. En este tutorial voy a usar de nombre &quot;HelloWorld&quot; pero pueden usar el nombre que quieran. Los nombres por defecto de las clases y la GUI se forman a partir del nombre del proyecto. &lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgYxYo5V2OhmF9DKlUX0YjxUrPi1wN8LupWaj6zq9NzaBqM2cAv5om74GF76wRzLJGTk5bP9VVVe4dpNzO4vRzJgXo7wVO7OW4YnZI-mr116TQ7ErudnJIs8hsa3gycoVqXcVDlAwMQQ/s1600-h/5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgYxYo5V2OhmF9DKlUX0YjxUrPi1wN8LupWaj6zq9NzaBqM2cAv5om74GF76wRzLJGTk5bP9VVVe4dpNzO4vRzJgXo7wVO7OW4YnZI-mr116TQ7ErudnJIs8hsa3gycoVqXcVDlAwMQQ/s320/5.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Debe aparecer una ventana parecida a la siguiente:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0ZdfPNz6G5hyphenhyphenDXfx3MwGEmonWF8JPeBoF4bcI2ei-WoAOKcHfTJ9AfNEhRPU9n-LKEa27ASUPeiRZwRaIl1o0uZRtGicGMMlaio-6lozVeprj-HBWa_LfcymszRozXLZ8UsmM2sqM9Q/s1600-h/6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0ZdfPNz6G5hyphenhyphenDXfx3MwGEmonWF8JPeBoF4bcI2ei-WoAOKcHfTJ9AfNEhRPU9n-LKEa27ASUPeiRZwRaIl1o0uZRtGicGMMlaio-6lozVeprj-HBWa_LfcymszRozXLZ8UsmM2sqM9Q/s320/6.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
En la imagen pueden ver los archivos que son creados por XCode por defecto. En este momento los que más nos importan son: &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Mainwindow.xib:&lt;/b&gt; Es el archivo que contiene la GUI de nuestra aplicación.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;main.m: &lt;/b&gt;Es el archivo que contiene el punto de entrada de nuestra aplicación (la primer función que se ejecuta de la aplicación). Este archivo contiene la función &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;main&lt;/span&gt; (funciona tal como en Java y C++).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HelloWorldAppDelegate.h: &lt;/b&gt;Es el archivo de cabecera de la clase que contendrá la lógica de nuestra aplicación.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HelloWorldAppDelegate.m: &lt;/b&gt;Es el archivo de implementación de la clase que contendrá la lógica de nuestra aplicación.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Para quienes conozcan de C++, los archivos &quot;.m&quot; son el equivalente a los archivos &quot;.cpp&quot;. En Java los archivos &quot;.java&quot; son el equivalente a la unión de los &quot;.h&quot; y los &quot;.m&quot;, ya que la clase es declarada en el mismo lugar donde se implementa (&lt;i&gt;declarar: &lt;/i&gt;decir qué métodos y atributos tiene la clase, &lt;i&gt;implementar: &lt;/i&gt;decir qué hace cada método y qué valores por defecto toma cada atributo).&lt;br /&gt;
&lt;br /&gt;
En el resto de los tutoriales haremos símiles con Java para dar a entender más fácilmente el código que vayamos desarrollando.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Creación de la GUI&lt;/span&gt; &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Ahora vamos a crear la GUI para nuestro botón y la clase controladora de esta GUI (aunque por ahora, no vamos a hacer nada en esta clase, recordemos: nuestro botón no hará nada). Para esto vamos de nuevo al menú &quot;File&quot; y seleccionamos &quot;New File...&quot;. En la ventana que aparece seleccionamos &quot;UIViewController subclass&quot; para indicar que vamos a crear una nueva clase controladora de GUI (y su respectiva GUI). &lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihJTcSjwF2pX0YXHlyVHrYfyJz2I8UiOail6InOJXlyPouyfgmWmVQ0zICvdCfAQuD5918z8surwBLGjEvy8qgbPfGHEuf9FiYK0VyISQJDTkYCWWmaDnoqFFELoxw78NdXBZyT2Zeig/s1600-h/7.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihJTcSjwF2pX0YXHlyVHrYfyJz2I8UiOail6InOJXlyPouyfgmWmVQ0zICvdCfAQuD5918z8surwBLGjEvy8qgbPfGHEuf9FiYK0VyISQJDTkYCWWmaDnoqFFELoxw78NdXBZyT2Zeig/s320/7.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Si la casilla &quot;With xib file user interface&quot; no está activada, actívela. Esta le indica a XCode que además del controlador, queremos que cree la GUI. Al dar click en &quot;Next&quot; debemos introducir el nombre de nuestra clase controladora, aquí usaré &quot;HelloWorldView.m&quot;. Damos click en &quot;Finish&quot; para finalizar.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI7XJvntwjGgq8EYzb7cGWMlPpaHSLPmofjPZtSHhx16b-3aVrIQtHFjvvYNOdQJJKME06NfoHeHhhkprb1u-3HtmDAOdnb7gh7qgSS21BiSBL9QTXw16L4qrCu_oUjI6NUKhjyoZV1Q/s1600-h/8.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI7XJvntwjGgq8EYzb7cGWMlPpaHSLPmofjPZtSHhx16b-3aVrIQtHFjvvYNOdQJJKME06NfoHeHhhkprb1u-3HtmDAOdnb7gh7qgSS21BiSBL9QTXw16L4qrCu_oUjI6NUKhjyoZV1Q/s320/8.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Después de esto ya tendremos 3 nuevos archivos en nuestro proyecto, el objetivo de cada archivo ya deben conocerlo, observen sus extensiones.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWeeVgO73xCTIEs5zYD0z6je0YVm8g1J23bIYL1Xp9yW-4wdDzoceavKZPHWe5dUU2q5u8shCgf8BhE2y2Kev2CnrWrxGUsLj3fwT11jwbus9g_beRxQhWyoMvwvr1WppDTeIzoSxO-g/s1600-h/9.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWeeVgO73xCTIEs5zYD0z6je0YVm8g1J23bIYL1Xp9yW-4wdDzoceavKZPHWe5dUU2q5u8shCgf8BhE2y2Kev2CnrWrxGUsLj3fwT11jwbus9g_beRxQhWyoMvwvr1WppDTeIzoSxO-g/s320/9.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Ahora vamos a darle una mirada al Interface Builder (el editor de las GUI). Para abrirlo damos doble click en el archivo &quot;HelloWorldView.xib&quot;:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4PSGYf2HnLLcaGCeKV8GYmjCV7kYkmVdAVDXXAS01WkPPGrTCGSFmSCoqddUymVwJCHT9wKlONC4r3lQ1LNC2Cvn5a9iZUrcLeGM2pF7JMz77PSZysvy2hW6rP_gnRzZjvxF92wSxQw/s1600-h/10.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4PSGYf2HnLLcaGCeKV8GYmjCV7kYkmVdAVDXXAS01WkPPGrTCGSFmSCoqddUymVwJCHT9wKlONC4r3lQ1LNC2Cvn5a9iZUrcLeGM2pF7JMz77PSZysvy2hW6rP_gnRzZjvxF92wSxQw/s320/10.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Este editor debe mostrar 4 ventanas:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;HelloWorld.xib: &lt;/b&gt;Es la ventana principal, muestra los componentes que hay dentro del archivo de GUI. Si le damos una mirada veremos que hay un objeto llamado &quot;File&#39;s Owner&quot;, este nos servirá más adelante para enlazar la GUI con la clase controladora.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;View: &lt;/b&gt;Es la ventana donde diseñamos nuestra GUI, es un editor &lt;a href=&quot;http://es.wikipedia.org/wiki/WYSIWYG&quot;&gt;WYSIWYG&lt;/a&gt;. En los siguientes pasos usaremos esta ventana para dibujar nuestro primer botón.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Propiedades:&lt;/b&gt; Esta ventana aparece como &quot;View attributes&quot; en la imagen ya que su nombre depende de la pestaña seleccionada. Es la ventana donde cambiaremos las propiedades de la GUI (color, título, entre otros) y su comportamiento (qué hacer al tocar el botón por ejemplo). Más tarde (tutorial 2) usaremos esta ventana para decidir qué hacer cuando a nuestro botón sea tocado.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Library: &lt;/b&gt;Es la ventana que contiene los componentes gráfios que podemos agregar a nuestra interfaz, tales como botones, labels (textos), campos de texto, barras de desplazamiento, entre otros.  &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;A continuación agregaremos nuestro primer botón. Busque en la ventana &quot;Library&quot; el siguiente objeto:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkpDJqw0qbfQuyGDg6PVO88oSXfe-69vII7B-RvCyHmWGCcRclaycDoM6lIZDZJNZyJq3IH8Ay1Uvc0WYh3Pyltxxi7o52HMIaSA_YIzQTj0QxDSzszYh0diN3Oujv-h_KS6GcN7hvnw/s1600-h/11.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkpDJqw0qbfQuyGDg6PVO88oSXfe-69vII7B-RvCyHmWGCcRclaycDoM6lIZDZJNZyJq3IH8Ay1Uvc0WYh3Pyltxxi7o52HMIaSA_YIzQTj0QxDSzszYh0diN3Oujv-h_KS6GcN7hvnw/s320/11.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Luego arrástrelo hasta la ventana &quot;View&quot; hasta la posición deseada. Debe quedar con una ventana similar a esta:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWcWcpiKvfiU8T2NVsS8NyTBiEEkE2tyerGewIH9SUDV4j5x0FSDHbEGSq8w6bgdCRC7KiD8AfOEkh4-pUzO5NM7Dy4921EgHC7CjTaFu7QecKhokHJVJI6XEH0p3gNXTOLEeFWNMj3g/s1600-h/12.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWcWcpiKvfiU8T2NVsS8NyTBiEEkE2tyerGewIH9SUDV4j5x0FSDHbEGSq8w6bgdCRC7KiD8AfOEkh4-pUzO5NM7Dy4921EgHC7CjTaFu7QecKhokHJVJI6XEH0p3gNXTOLEeFWNMj3g/s320/12.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Ahora dé doble click sobre el botón que acaba de agregar y escriba el texto que desee. Yo escribiré &quot;Hola Mundo&quot;.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYieaxxglwvK4M95wr6E97KuprEXucHZdn5mZ6ow6Hloj_yv9XgjjWg2acv_mztq0EyLrXJ1Hje32rEKdM8cPU-eQXltonkigX5fCC3xDjj9hc11L5C7pdpZOIvSFAjKTXJQ2U6660LA/s1600-h/13.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYieaxxglwvK4M95wr6E97KuprEXucHZdn5mZ6ow6Hloj_yv9XgjjWg2acv_mztq0EyLrXJ1Hje32rEKdM8cPU-eQXltonkigX5fCC3xDjj9hc11L5C7pdpZOIvSFAjKTXJQ2U6660LA/s320/13.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Esta es toda la configuración que debemos hacer a nuestra GUI mediante el Interface Builder, podemos guardar (Comando+S) y cerrar (Comando+Q). Ahora, vamos a indicarle a nuestra ventana que debe agregar una instancia de la clase HelloWorldView, esto lo hacemos mediante código en los pasos siguientes.&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Código fuente&lt;/span&gt; &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Si abrimos el archivo &quot;HelloWorldAppDelegate.h&quot; veremos un código similar a este:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicXAAB0tl8GoQ58qatWUgqQUCwHQDIl4iDPZbM6ghHkftO03N6J6_2rioPN7SZDUSEdP4Z9B2w6O3rxsbvLRK24drLeVDuAlMmppZlZt972tJDesWzNRfunAuARI_KM2smuujNujBNQQ/s1600-h/14.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicXAAB0tl8GoQ58qatWUgqQUCwHQDIl4iDPZbM6ghHkftO03N6J6_2rioPN7SZDUSEdP4Z9B2w6O3rxsbvLRK24drLeVDuAlMmppZlZt972tJDesWzNRfunAuARI_KM2smuujNujBNQQ/s320/14.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Debemos agregar las siguientes líneas en este archivo:  &lt;br /&gt;
&lt;ul style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;li&gt;&lt;span style=&quot;color: magenta;&quot;&gt;@class&lt;/span&gt; &lt;span style=&quot;color: #45818e;&quot;&gt;HelloWorldView&lt;/span&gt;;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;HelloWorldView&lt;/span&gt; *myView;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: magenta;&quot;&gt;@property&lt;/span&gt; (&lt;span style=&quot;color: magenta;&quot;&gt;nonatomic&lt;/span&gt;, &lt;span style=&quot;color: magenta;&quot;&gt;retain&lt;/span&gt;) &lt;span style=&quot;color: #45818e;&quot;&gt;HelloWorldView&lt;/span&gt; *myView;&lt;/li&gt;
&lt;/ul&gt;En las posiciones que se muestran en la siguiente imagen:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpEtFvW8fEhxyT0xEqNkJrztePcj5kf64RtkfRsr-gAZ9rNiMVThk7S1D8s71Ln8hvg8ykffvfPvuKNLYXZo1TX2VS_Kik75xGx8u_68fbkzVxVjL6HJ7R9M6f_HiORHN6XGsggyG2xQ/s1600-h/15.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpEtFvW8fEhxyT0xEqNkJrztePcj5kf64RtkfRsr-gAZ9rNiMVThk7S1D8s71Ln8hvg8ykffvfPvuKNLYXZo1TX2VS_Kik75xGx8u_68fbkzVxVjL6HJ7R9M6f_HiORHN6XGsggyG2xQ/s320/15.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Ahora veamos el archivo &quot;HelloWorldAppDelegate.m&quot;:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHxJ9Do2jEbxG3_VJ-gEjadXlnBI188Wc2-4JY9-TbNaxHtZECDkkS0G8p2-sgD3nufnNBei2J4i6qbbYaOg6B-CuhazMvQwAAECfZDveS6mD7ZP6gghgYEghOUd7GlFWPQpiv7eLqYA/s1600-h/16.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHxJ9Do2jEbxG3_VJ-gEjadXlnBI188Wc2-4JY9-TbNaxHtZECDkkS0G8p2-sgD3nufnNBei2J4i6qbbYaOg6B-CuhazMvQwAAECfZDveS6mD7ZP6gghgYEghOUd7GlFWPQpiv7eLqYA/s320/16.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Aquí debemos agregar las siguientes líneas:&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;li&gt;&lt;span style=&quot;color: #783f04;&quot;&gt;#import&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #990000;&quot;&gt;&quot;HelloWorldView.h&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: magenta;&quot;&gt;@synthesize&lt;/span&gt; window, myViewController;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #45818e;&quot;&gt;HelloWorldView&lt;/span&gt; *aViewController = [[[&lt;span style=&quot;color: #45818e;&quot;&gt;HelloWorldView&lt;/span&gt; &lt;span style=&quot;color: #741b47;&quot;&gt;alloc&lt;/span&gt;] &lt;span style=&quot;color: #741b47;&quot;&gt;initWithNibName&lt;/span&gt;:&lt;span style=&quot;color: #990000;&quot;&gt;@&quot;HelloWorldView&quot;&lt;/span&gt; &lt;span style=&quot;color: #741b47;&quot;&gt;bundle&lt;/span&gt;:[&lt;span style=&quot;color: #741b47;&quot;&gt;NSBundle mainBundle&lt;/span&gt;]] &lt;span style=&quot;color: #741b47;&quot;&gt;autorelease&lt;/span&gt;];&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: magenta;&quot;&gt;self&lt;/span&gt;.myViewController = aViewController;&lt;/li&gt;
&lt;li&gt;[&lt;span style=&quot;color: #45818e;&quot;&gt;window&lt;/span&gt; &lt;span style=&quot;color: #741b47;&quot;&gt;addSubview&lt;/span&gt;:[aViewController &lt;span style=&quot;color: #741b47;&quot;&gt;view&lt;/span&gt;]];&lt;/li&gt;
&lt;/ul&gt;En las posiciones que se muestran a continuación:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Cq4YMxbraDAPdIYx-H0y7aEc83NmARs2TeGiFz0RP7tQ4fsOmfkNQyahQTX8UaP-5X0zpDhkvSbg-O-BIYJ8CZRr0u71aullGLRpE21lv3BvL8iF4vOC7JUDcq8jsX-oIwKGOGk0HQ/s1600-h/17.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Cq4YMxbraDAPdIYx-H0y7aEc83NmARs2TeGiFz0RP7tQ4fsOmfkNQyahQTX8UaP-5X0zpDhkvSbg-O-BIYJ8CZRr0u71aullGLRpE21lv3BvL8iF4vOC7JUDcq8jsX-oIwKGOGk0HQ/s320/17.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Las líneas recién agregadas sirven para indicarle a nuestra aplicación que un objeto de tipo &quot;HelloWorldView&quot; debe ser creado y agregado a nuestra ventana. Más adelante explicaré que hace cada una de estas líneas.&lt;/li&gt;
&lt;li&gt;Ya tenemos nuestra primer aplicación lista! Ahora debemos ejecutarla, para esto asegurémonos que tenemos seleccionado &quot;iPhone Simulator 3.0&quot; en el campo de selección de plataforma objetivo para compilación:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgosCYV1p5bh2mDFf636LhXMJm-86O_UPphiObHNme9Cq75WqtrYiKc5U28fooaPVzf5Bg0GfC4J0MH05X9I0Qb1QFO7owc-50FMQus5OY5I2naWJ_PA_FpYdWdWS4s4hwTqGN94i4oSg/s1600-h/18.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgosCYV1p5bh2mDFf636LhXMJm-86O_UPphiObHNme9Cq75WqtrYiKc5U28fooaPVzf5Bg0GfC4J0MH05X9I0Qb1QFO7owc-50FMQus5OY5I2naWJ_PA_FpYdWdWS4s4hwTqGN94i4oSg/s320/18.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt; Nota: Si no encuentra la opción que aparece seleccionada en la anterior imagen, observe al final de este post la sección &quot;¿No encuentra iPhone Simulator 3.0?&quot;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Listo, ahora ya podemos compilar y probar nuestra aplicación, presione la tecla Comando+ENTER o el ícono &quot;Build and Go&quot; de la parte superior y deberá ver la siguiente ventana:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFLwHRMOBtKY9BCf1rxNfvK9q9BcZHVY0wGVbg5cL_hkDXqPTXm-UqM89B6kaEFrlMUZK_ioptVXWHJiPpk0a7rxFRRAWxwkIpyCTxCaGBLWlGTbSmV9cdRCyy7HIWZFOa2EAyaLhu6w/s1600-h/HolaMundo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFLwHRMOBtKY9BCf1rxNfvK9q9BcZHVY0wGVbg5cL_hkDXqPTXm-UqM89B6kaEFrlMUZK_ioptVXWHJiPpk0a7rxFRRAWxwkIpyCTxCaGBLWlGTbSmV9cdRCyy7HIWZFOa2EAyaLhu6w/s320/HolaMundo.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;¡¡ Hemos terminado nuestra primer aplicación para iPhone !!&lt;/span&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;span style=&quot;font-size: large;&quot;&gt;¿No encuentra iPhone Simulator 3.0?&lt;/span&gt;&lt;br /&gt;
Es posible que no pueda ver la opción &quot;iPhone Simulator 3.0&quot; entre las opciones de dobjetivo de compilación. El menú que usted debería ver es el siguiente:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgosCYV1p5bh2mDFf636LhXMJm-86O_UPphiObHNme9Cq75WqtrYiKc5U28fooaPVzf5Bg0GfC4J0MH05X9I0Qb1QFO7owc-50FMQus5OY5I2naWJ_PA_FpYdWdWS4s4hwTqGN94i4oSg/s1600-h/18.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgosCYV1p5bh2mDFf636LhXMJm-86O_UPphiObHNme9Cq75WqtrYiKc5U28fooaPVzf5Bg0GfC4J0MH05X9I0Qb1QFO7owc-50FMQus5OY5I2naWJ_PA_FpYdWdWS4s4hwTqGN94i4oSg/s320/18.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Si usted en cambio ve el siguiente menú (o alguno parecido):&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJWFkjxqu2pFsC_EYQ8CwOEtvnU03cOaWR2kKkt_qPIw_r23epBC0GDzSpl1-kTKBYc8f7QbzUvWXIyD_0jJqkTwqRbOWIUGshDP0Fpfua6u_UVaT-M0g2tqWRXSwWoepCC2W4Vneng/s1600-h/19.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgJWFkjxqu2pFsC_EYQ8CwOEtvnU03cOaWR2kKkt_qPIw_r23epBC0GDzSpl1-kTKBYc8f7QbzUvWXIyD_0jJqkTwqRbOWIUGshDP0Fpfua6u_UVaT-M0g2tqWRXSwWoepCC2W4Vneng/s320/19.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Entonces es necesario que acceda al menu &quot;Project&quot; y seleccione la opción &quot;Edit Project Settings&quot;:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrd4DkmxO5RXgmPOwWB5TBhc8u8L1WCWNdockWyR7sr74a8uHE7aQbYgWVa_bmDvEDpfVeyOgSo8vZ6xHUd9XGbyD9cRDoaf5i8MxpS2MkFATAzgh3L7wd3uGPWuhXg-144UZwoJtkyg/s1600-h/20.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrd4DkmxO5RXgmPOwWB5TBhc8u8L1WCWNdockWyR7sr74a8uHE7aQbYgWVa_bmDvEDpfVeyOgSo8vZ6xHUd9XGbyD9cRDoaf5i8MxpS2MkFATAzgh3L7wd3uGPWuhXg-144UZwoJtkyg/s320/20.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Observe la opción &quot;Base SDK for All Configurations&quot;:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7lyFwf68texyW1PdXJXtg2rjP0z05GCj9hY1JFHB8DcGJji0fNHednOXuSMJfUdGoW3_eTX9gjonj6ZvU7yb7nLnNdrXnX4K5S5tBWm3DexQuLp-de17hac5c-FPFis-AjHXHg8gcgg/s1600-h/21.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7lyFwf68texyW1PdXJXtg2rjP0z05GCj9hY1JFHB8DcGJji0fNHednOXuSMJfUdGoW3_eTX9gjonj6ZvU7yb7nLnNdrXnX4K5S5tBWm3DexQuLp-de17hac5c-FPFis-AjHXHg8gcgg/s320/21.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Si usted no tiene seleccionado &quot;iPhone Device 3.0&quot; entonces selecciónelo del menú:&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3DdXeGOgrW5FgG4lr5-qimtEQd43JQgNUvCj7a4Ee5mnGumVK0d1LkGxUxlZKbnwucQv6BUa2DxK1mSGxFSMHDJsFk0FZsJcSzXZSVpD6nco894Y_AX_4iLumtRBLwpikbEwtiJQ3tg/s1600-h/22.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3DdXeGOgrW5FgG4lr5-qimtEQd43JQgNUvCj7a4Ee5mnGumVK0d1LkGxUxlZKbnwucQv6BUa2DxK1mSGxFSMHDJsFk0FZsJcSzXZSVpD6nco894Y_AX_4iLumtRBLwpikbEwtiJQ3tg/s320/22.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Después de esto cierre la ventana de configuración. Ya podrá acceder a la opción &quot;iPhone Simulator 3.0&quot; del menú de objetivos de compilación.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Y por último ...&lt;/span&gt;&lt;br /&gt;
¿Y esas líneas de código que agregamos para qué sirven? Bueno, en el próximo tutorial daré la explicación, pero para los curiosos, les queda de tarea ... :) ... recuerdan los 2 enlaces que día al inicio de este post ?&lt;br /&gt;
&lt;br /&gt;
El código de este primer tutorial no está disponible, para los siguientes tutoriales dejaré el código enlazado dentro del post.&lt;br /&gt;
&lt;br /&gt;
Chao !&lt;br /&gt;
Hasta la próxima !</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/4853414395631557270/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/01/tutorial-1-hola-mundo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/4853414395631557270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/4853414395631557270'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/01/tutorial-1-hola-mundo.html' title='Tutorial 1: Hola Mundo'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFLwHRMOBtKY9BCf1rxNfvK9q9BcZHVY0wGVbg5cL_hkDXqPTXm-UqM89B6kaEFrlMUZK_ioptVXWHJiPpk0a7rxFRRAWxwkIpyCTxCaGBLWlGTbSmV9cdRCyy7HIWZFOa2EAyaLhu6w/s72-c/HolaMundo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-1201231032889209822</id><published>2010-01-28T21:08:00.002-05:00</published><updated>2010-01-31T15:54:36.333-05:00</updated><title type='text'>Realidad Aumentada en otras plataformas móviles</title><content type='html'>Estas aplicaciones no son de iPhone pero me gustaron :) y se relacionan con mi tesis.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/gwtmk1ZjhY0&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x234900&amp;color2=0x4e9e00&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/gwtmk1ZjhY0&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://instantreality2.igd.fraunhofer.de/home/&quot;&gt;Sony Vaio Mini: Augmented Reality Sightseeing (Fraunhofer IGD)&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/8EA8xlicmT8&amp;hl=en_US&amp;fs=1&amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/8EA8xlicmT8&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.wikitude.org/&quot;&gt;Wikitude AR Travel Guide (Part 1)&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/tpaJBu4BEuA&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x234900&amp;color2=0x4e9e00&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/tpaJBu4BEuA&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.wikitude.org/&quot;&gt;Wikitude AR Travel Guide (Part 2)&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;340&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/b64_16K2e08&amp;hl=en_US&amp;fs=1&amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/b64_16K2e08&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;340&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://layar.eu/&quot;&gt;Browse the world with an AR browser&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/1201231032889209822/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/01/realidad-aumentada-en-otras-plataformas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/1201231032889209822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/1201231032889209822'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/01/realidad-aumentada-en-otras-plataformas.html' title='Realidad Aumentada en otras plataformas móviles'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-4879242616733404602</id><published>2010-01-28T20:53:00.001-05:00</published><updated>2010-01-31T15:52:37.007-05:00</updated><title type='text'>Programas similares a guías turísticos en iPhone con Realidad Aumentada</title><content type='html'>Estos son algunos de los programas que tienen alguna relación con lo que deseo que sea mi tesis. En general: basado en el posicionamiento del usuario mostrar datos a su alrededor extraídos de una base de datos y mostrarlos en pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/ps49T0iJwVg&amp;hl=en_US&amp;fs=1&amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/ps49T0iJwVg&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://laughingsquid.com/new-york-nearest-subway-augmented-reality-iphone-3gs-app/&quot;&gt;New York Nearest Subway&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/5fZk0HaIs4s&amp;hl=en_US&amp;fs=1&amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/5fZk0HaIs4s&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.acrossair.com/apps_nearesttube.htm&quot;&gt;Nearest Tube&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;340&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/0VQCRXkSa74&amp;hl=en_US&amp;fs=1&amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/0VQCRXkSa74&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;340&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.geovector.com/applications/world-surfer/&quot;&gt;GeoVector World Surfer&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object height=&quot;225&quot; width=&quot;400&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=7468225&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=7468225&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;400&quot; height=&quot;225&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://vimeo.com/7468225&quot;&gt;PeakAR - iPhone apps&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/salzburgresearch&quot;&gt;Salzburg Research&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/%20http://peakar.salzburgresearch.at/&quot;&gt;Peak.Ar (It gives you the name and the height of the mountain and hills around you)&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/4879242616733404602/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/01/programas-similares-guias-turisticos-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/4879242616733404602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/4879242616733404602'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/01/programas-similares-guias-turisticos-en.html' title='Programas similares a guías turísticos en iPhone con Realidad Aumentada'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-505899040406032102</id><published>2010-01-28T20:29:00.002-05:00</published><updated>2010-01-31T15:50:50.945-05:00</updated><title type='text'>Qué se ha hecho en iPhone con Realidad Aumentada?</title><content type='html'>Estas son algunas de las aplicaciones que conozco que usan Realidad Aumentada en iPhone. Esto da una idea de lo que podemos llegar a hacer ...&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/wt96OomJY9A&amp;hl=en_US&amp;fs=1&amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/wt96OomJY9A&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;a href=&quot;http://gamesalfresco.com/2009/12/29/augmented-reality-iphone-sudoku-gra/&quot;&gt;Augmented Reality iPhone Sudoku Grabber&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Y4IjeO7g6kA&amp;hl=en_US&amp;fs=1&amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/Y4IjeO7g6kA&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;a href=&quot;http://ogmento.com/&quot;&gt;&lt;b&gt;iPhone within an iPhone&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/5M-oAmBDcZk&amp;hl=en_US&amp;fs=1&amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/5M-oAmBDcZk&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.hitl.washington.edu/artoolkit/&quot;&gt;ARToolKit v4.4 running on iPhone&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;object width=&quot;425&quot; height=&quot;340&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/UIGAkVMre_o&amp;hl=en_US&amp;fs=1&amp;rel=0&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/UIGAkVMre_o&amp;hl=en_US&amp;fs=1&amp;rel=0&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;340&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.bradesco.com.br/&quot;&gt;Realidade Aumentada Bradesco no iPhone 3GS&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;Pronto colocaré más videos de Realidad Aumentada en iPhone.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/505899040406032102/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/01/que-se-ha-hecho-en-iphone-con-realidad.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/505899040406032102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/505899040406032102'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/01/que-se-ha-hecho-en-iphone-con-realidad.html' title='Qué se ha hecho en iPhone con Realidad Aumentada?'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8316328622623900385.post-502586113709686908</id><published>2010-01-27T20:00:00.001-05:00</published><updated>2010-01-27T20:00:37.976-05:00</updated><title type='text'>Objetivo del Blog</title><content type='html'>Hola!&lt;br&gt;&lt;br&gt;Este blog ha sido creado para publicar los avances que vaya realizando en la investigación de mi Tesis de Maestría.&lt;br&gt;&lt;br&gt;Aquí colocaré:&lt;br&gt;&lt;ul&gt;&lt;li&gt;El paso a paso de lo que vaya haciendo para aprender a desarrollar para iPhone&lt;/li&gt;  &lt;li&gt;Manual introductorio a Objective-C, haciendo el símil a la programación en Java.&lt;/li&gt;&lt;li&gt;Muchos enlaces! De recursos para programadores de iPhone, de videos interesantes de Realidad Aumentada, de otros videos que aporten algo a este blog&lt;br&gt;  &lt;/li&gt;&lt;/ul&gt;Si hay algún otro tema que consideres que debe ir aquí, responde a esta entrada de blog.&lt;br&gt;&lt;br&gt;Daniel W.&lt;br&gt;&lt;br&gt; </content><link rel='replies' type='application/atom+xml' href='http://dwilches.blogspot.com/feeds/502586113709686908/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://dwilches.blogspot.com/2010/01/objetivo-del-blog.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/502586113709686908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8316328622623900385/posts/default/502586113709686908'/><link rel='alternate' type='text/html' href='http://dwilches.blogspot.com/2010/01/objetivo-del-blog.html' title='Objetivo del Blog'/><author><name>DWilches</name><uri>http://www.blogger.com/profile/14711413074940505628</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWvi7Cjr_zqchexX0OY2UTtxCUuOKs0CWHgTiBugkPSYsbtZPQYfqEMMNnkWhUsPEmp60g3WfArJovRZAOwxqcCgsGjukrr1hYFSXAq2EtVGBu8VgTPVdro84-cRWE8w/s120/AvatarFMA1.jpg'/></author><thr:total>0</thr:total></entry></feed>