<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Objective C &#8211; freniche.com</title>
	<atom:link href="/tag/objective-c/feed/" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>Another personal blog about everything tech-related</description>
	<lastBuildDate>Sun, 30 Dec 2018 19:56:49 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.8.13</generator>
	<item>
		<title>La comunidad de desarrollo Mac en España</title>
		<link>/2014/01/19/la-comunidad-de-desarrollo-mac-en-espana/</link>
		<comments>/2014/01/19/la-comunidad-de-desarrollo-mac-en-espana/#comments</comments>
		<pubDate>Sun, 19 Jan 2014 09:28:18 +0000</pubDate>
		<dc:creator><![CDATA[dfreniche]]></dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[ObjectiveC]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[comunidad]]></category>
		<category><![CDATA[Objective C]]></category>

		<guid isPermaLink="false">/?p=2088</guid>
		<description><![CDATA[He recibido un par de correos preguntándome sobre esto mismo en los últimos días. Además, es algo que me gusta comentar en los cursos que imparto sobre iOS (y en los de Android, solo que en esos hablo lógicamente de la comunidad Androide). Así que voy a resumir y reunir aquí lo que necesitas para [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>He recibido un par de correos preguntándome sobre esto mismo en los últimos días. Además, es algo que me gusta comentar en los cursos que imparto sobre iOS (y en los de Android, solo que en esos hablo lógicamente de la comunidad Androide). Así que voy a resumir y reunir aquí lo que necesitas para acceder a la <em>misteriosa y privilegiada comunidad de desarrollo iOS/Mac en España</em>.</p>
<h2>Sin miedos</h2>
<p>Primero, lo más importante: si te interesa el desarrollo con tu Mac, en Cocoa, usando Xcode y Objective C <em>ya eres miembro de esta comunidad</em>. No ha sido tan difícil entrar, ¿no?. Como en cualquier comunidad, sólo hace falta que tengas interés, o curiosidad, o conocimientos, y que quieras compartirlos. No hay que hacer pactos con el Anticristo, ni con los bancos, ni firmar contratos con la sangre de un gallo. Cosa asquerosa, por cierto.</p>
<p>Puedes disfrutar de esta comunidad <em>a distancia</em>, usando tu ordenador e Internet, pero yo siempre recomiendo el contacto cara a cara, personal. El periodo más productivo de mi vida como programador fue cuando estudiaba la carrera de Informática. Y así lo recuerdo por el grupo de personas con las que me reunía a programar y a <em>hablar</em> sobre programación. Probablemente es más la sensación de que «cualquier tiempo pasado fue mejor» que algo objetivo (probablemente, no, seguro, mi código era una <em>abominación</em>), pero hablar con gente que sabe mucho más que tú es algo que estimula mucho, motiva y te fuerza a mejorar para no sentir que haces el ridículo entre ellos.</p>
<p>Aunque eso nunca pasa: <strong>nadie, nunca, se va a reír del que no sabe</strong>. Lo que hará es ayudarle. Así que destierra ese miedo de tu mente, esa pesadilla que alguna vez has tenido: nadie se va a levantar, en medio del bar señalándote y gritando «mirad al pardillo este, que no sabe nada de nada». Si alguien actuara así es causa objetiva para que te tatúen <em>tonto</em> en la frente, y de no ser parte de esta comunidad.</p>
<h2>Blogs</h2>
<p>Pongo aquí una lista de los mejores blogs de programación Cocoa en Español <strong>que conozco y leo</strong>. Debe haber más: apórtalos en los comentarios. Siempre son bienvenidos. Van sin un orden concreto, salvo Objective-C.es, el blog de Rafa, claro ejemplo de superación personal y, como se que al final acabará en Apple, le voy haciendo ya la pelota para que pase mi CV cuando llegue el momento.</p>
<ul>
<li><a href="http://objective-c.es/">Objective-C.es</a></li>
<li><a href="http://www.migueldiazrubio.com/">Blog de Miguel Díaz Rubio</a></li>
<li><a href="http://www.cocoaosx.com/">Cocoa Mental</a></li>
</ul>
<h2>Reuniones periódicas</h2>
<p>Aquí tenemos las reuniones que se tienen en distintas ciudades de España, con distintas periodicidades. Si no tienes ninguna cerca <a href="/2010/11/30/como-crear-tu-propia-nscoder-night/">siempre puedes animarte y fundar la tuya propia</a>. Sólo necesitas a una segunda persona interesada en lo mismo.</p>
<ul>
<li><a href="http://nscoder-mad.tumblr.com/">NSCoder Night Madrid</a> </li>
<li><a href="http://nsexperience.tumblr.com/">NSXperience BCN</a> </li>
<li><a href="http://nscoder-sev.tumblr.com/">NSCoder Night Sevilla</a> <a href="">NSCoder Night Valencia</a></li>
<li><a href="http://nscoder-cor.tumblr.com/">NSCoder Night Córdoba</a></li>
</ul>
<p>Todas estas reuniones tienen su propio Twitter. Busca y ponte en contacto con ellos.</p>
<h2>«La» Conferencia</h2>
<p>La conferencia de la comunidad Cocoa Española, el sitio al que hay que ir es la <a href="http://nsspain.com/">NSSPain</a>. Es una conferencia internacional (luego es en Inglés), pero es la que más cerca vas a encontrar con mejor contenido. Yo me he hecho fijo en el primer año.</p>
<h2>Twitter</h2>
<p>Hay montones de gente interesante a la que seguir. Te recomiendo que sigas por twitter a los blogueros anteriores y que mires a quiénes siguen. Es la forma más rápida.</p>
<h2>Preguntas y respuestas</h2>
<p>El portal <a href="http://www.nscodecenter.com/preguntas/">NSCoderCenter</a> es lo que buscas</p>
<h2>Pull request</h2>
<p>Si quieres que incluya un apartado, o quieres completar todo esto con más información, usa los comentarios más abajo. Gracias.</p>
]]></content:encoded>
			<wfw:commentRss>/2014/01/19/la-comunidad-de-desarrollo-mac-en-espana/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Notación Húngara: contrapost</title>
		<link>/2014/01/10/notacion-hungara-contrapost/</link>
		<comments>/2014/01/10/notacion-hungara-contrapost/#comments</comments>
		<pubDate>Fri, 10 Jan 2014 09:38:54 +0000</pubDate>
		<dc:creator><![CDATA[dfreniche]]></dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[ObjectiveC]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Objective C]]></category>
		<category><![CDATA[Polémicas]]></category>

		<guid isPermaLink="false">/?p=2091</guid>
		<description><![CDATA[¿A quién no le gusta una buena polémica? Esta semana en Twitter Sendoa Portuondo planteó una conversación bastante interesante sobre si era conveniente (o estaba de moda) usar prefijos en las variables de nuestros programas Objective-C. Mi respuesta fue que, a veces los usaba. Especialmente uso los prefijos para los IBOutlets, de forma que puedo [&#8230;]]]></description>
				<content:encoded><![CDATA[<h1>¿A quién no le gusta una buena polémica?</h1>
<p><a href="/wp-content/uploads/2014/01/polemica-tuitera.png"><img src="/wp-content/uploads/2014/01/polemica-tuitera.png" alt="Polémica Tuitera" width="558" height="624" class="aligncenter size-full wp-image-2096" srcset="/wp-content/uploads/2014/01/polemica-tuitera.png 558w, /wp-content/uploads/2014/01/polemica-tuitera-268x300.png 268w, /wp-content/uploads/2014/01/polemica-tuitera-535x598.png 535w" sizes="(max-width: 558px) 100vw, 558px" /></a></p>
<p>Esta semana en Twitter <a href="http://www.punteroavoid.com/">Sendoa Portuondo</a> planteó una conversación bastante interesante sobre si era conveniente (o estaba de moda) usar prefijos en las variables de nuestros programas Objective-C. Mi respuesta fue que, a veces los usaba. Especialmente uso los prefijos para los <code>IBOutlets</code>, de forma que puedo completar el código rápidamente (o encontrar un Outlet sin tener que hacer un viaje al<code>@interface</code> correspondiente.</p>
<p>Fernando Rodríguez (<a href="http://www.cocoaosx.com/">Cocoa Mental</a>, Big Nerd Ranch, <em>super Bad-Ass Master of the Universe</em>) argumentaba totalmente en contra y <a href="http://www.cocoaosx.com/2014/01/09/nomenclatura-hungara-objective-c/">ha escrito un artículo en Cocoa Mental</a> al respecto. Normalmente estoy de acuerdo con las cosas que publica Fernando, más que nada porque voy al blog a <em>leer para aprender</em> y puedo aportar poco. Pero en este tema concreto (el uso o no de prefijos para identificar <em>qué</em> es una variable), no estoy de acuerdo.</p>
<p>Sus argumentos, que he visto esgrimidos en muchos sitios, se basan en la horrenda interpretación que se hizo de la Notación Húngara propuesta por <a href="http://es.wikipedia.org/wiki/Charles_Simonyi">Charles Simonyi</a>. Nadie lo explica mejor que Joel Spolsky en el artículo <a href="http://www.joelonsoftware.com/articles/Wrong.html">Doing it wrong</a>, pero por si no tenéis ganas de leerlo (<em>mal!, dejad en este momento todo esto y leed el blog de Joel de cabo a rabo</em>), voy a intentar explicarlo.</p>
<h1>Notación Húngara</h1>
<p>Si lees el <a href="http://msdn.microsoft.com/en-us/library/aa260976(VS.60).aspx"><em>paper</em> original de Simonyi</a>, encontrarás que la idea que presenta es: «pongamos el <em>qué es</em> de una variable en el prefijo, de forma que sepamos de qué estamos hablando al usarlo luego». Probablemente por no ser el Inglés su lengua materna Simonyi usó la palabra <em>type</em>. Pero no se refiere al tipo que el compilador asigna a una variable, sino a su forma, características, esencia, chi o como lo llames. Su <em>Kind</em>. En un párrafo hablando de cómo prefijar cantidades (índices, filas, etc.) podemos leer:</p>
<blockquote>
<p>Quantities are named by their type possibly followed by a qualifier. A convenient (and legal) punctuation is recommended to separate the type and qualifier part of a name. (In C, we use a capital initial for the qualifier as in rowFirst: row is the type; First is the qualifier.)</p>
</blockquote>
<p>Si os fijáis atentamente, para dar nombre aquí a una variable que representa una fila, la llama *row_First, y no longFirst o intFirst. Es decir, usa &#95;qué&#95; es esa variable y no el &#95;tipo&#95; de nuestro lenguaje elegido para representar a ese elemento. Los grandes detractores de la notación húngara han visto código escritos por otros que no la han entendido y que les obligaban a hacer tonterías como:</p>
<pre><code>int *ptrFirstNumber;        // ¡ya sabemos que el tipo es un puntero a int!
char *strName;              // con leer la declaración, basta...
NSString stringAddress;     // esto es de nota
</code></pre>
<h1>Apple Will Never Do That</h1>
<p>Por cierto y como nota <em>inocente</em>. Dado que esto lo extendió Microsoft y dado que Apple nunca se equivoca, Cocoa es elegante, etc. etc. en Cocoa no encontraremos <strong>nunca</strong> esta horrible notación, ¿no?. Bueno, no esta, sino <em>notación húngara a la inversa</em> (HungarianNotation^-1): usando sufijos <strong>en los tipos</strong>. Por ejemplo estas cositas:</p>
<pre><code>AboutViewController *vc;    // ¡ejem! Ya sabemos que vc es de tipo "Pantalla About". 
</code></pre>
<p>¿Pero realmente es necesario poner «ViewController» al final de un tipo que extiende de UIViewController? Ya puesto así, que se llame <code>AboutViewControllerUIResponderNSObject</code>, y vemos todas las clases de las que hereda, ¿no?. ¡Error!.</p>
<p>Aquí Apple está <em>marcando</em> en el nombre de la clase <em>qué</em> es, y no su tipo. Para Apple, un ViewController es una <em>pantalla</em> en un programa iOS. Fijáos que el sufijo no es <code>UIViewController</code>, que sería el tipo. Además, sólo leyendo AboutViewController no sabes si es un <code>UIViewController</code>, un <code>UITableViewController</code>, &#8230; lo que sí entiendes es que es una pantalla.</p>
<p>Hungarian Notation at its best!</p>
<h1>Un ejemplo, que me duermo</h1>
<p>Quiero cerrar con un pequeño ejemplo. Supongamos que tenemos una clase que nos devuelve Usuarios (de un servicio web o una BD). Es la clase <code>Users</code>. Esta clase dispone de dos métodos:</p>
<pre><code>+ (NSDictionary *)allUsers;
+ (NSDictionary *)allUsersOrderedByName;
</code></pre>
<p>Los nombres de los métodos son <em>autoexplicativos</em>. Usamos un diccionario en el que buscaremos usando una clave (en este caso, el nº de usuario).</p>
<p>Si en mi código, más adelante, quiero guardar estos dos diccionarios (uno está ordenado por los valores de sus claves, que ya que estamos es la forma de ordenar un diccionario, el otro no) podría usar <em>Hungarian Notation Dark Side Style</em>, la criticada por Fernando:</p>
<pre><code>NSDictionary *dictionaryAllUsers = [Users allUsers];
NSDictionary *dictionaryAllUsersOrdered = [Users allUsersOrderedByName];
</code></pre>
<p>Aquí, el ver que son un NSDictionary no me aporta nada. Es una tontería redundante poner estos prefijos. Mucho mejor usando <em>Hungarian Notation Luke Style</em>:</p>
<pre><code>NSDictionary *listUsers;
NSDictionary *orderedListUsers;
</code></pre>
<p>Aquí usamos <em>qué</em> es para nosotros estas variables, qué representan en el flujo del programa. Son listas de usuarios. Que utilizaremos para mostrar en pantalla, buscar o lo que sea. Me da igual su tipo. Pueden ser NSDictionary, NSArray, un tipo propio, un B-Tree&#8230; Lo que me interesa es comprender de un vistazo que a) son listas y b) una de ellas viene ordenada.</p>
<h1>Conclusión</h1>
<p>Así que, sí, estoy de acuerdo con Fernando en que poner el tipo del compilador al identificador de una variable es una chorrada. Pero eso no es Notación Húngara. Es la mala interpretación que se hizo de ella. La Notación Húngara tal y como se definió es valiosa.</p>
<h1>Vale, pero al final, ¿tú lo usas?</h1>
<p>Pues creo que sí. Pero no de una manera consciente. Este tipo de discusiones, que algunos obsesionados por «hacer que funcione» verán como una pérdida de tiempo son las que nos permiten aprender y entender por qué hacemos las cosas como las hacemos. Es lo que nos hace Informáticos. Que no Ingenieros. Los Ingenieros no entenderían esto :-D. Pero esta polémica la dejo para otro post.</p>
]]></content:encoded>
			<wfw:commentRss>/2014/01/10/notacion-hungara-contrapost/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Conferencia NSCoders Apple Conference 2011, ¡ya casi está aquí!</title>
		<link>/2011/10/20/conferencia-nscoders-apple-conference-2011-ya-casi-esta-aqui/</link>
		<comments>/2011/10/20/conferencia-nscoders-apple-conference-2011-ya-casi-esta-aqui/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 18:04:15 +0000</pubDate>
		<dc:creator><![CDATA[dfreniche]]></dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[ObjectiveC]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[NSCoder Nights]]></category>
		<category><![CDATA[Objective C]]></category>

		<guid isPermaLink="false">/?p=1626</guid>
		<description><![CDATA[¿Cómo? ¿Que aún no te has apuntado a la NSCoders Apple Conference 2011? ¡Pues ya estás tardando! Podrás ver allí a lo más granado de las distintas NSCoder Nights de toda España. Yo voy a impartir una de las sesiones. Así que ya sabes: no hay excusa para no invitarme a un café, o a [&#8230;]]]></description>
				<content:encoded><![CDATA[<div id="attachment_1627" style="width: 680px" class="wp-caption aligncenter"><a href="http://nsconf.nscoders.org/"><img class="size-full wp-image-1627" title="NSCoders Apple Conference 2001" src="/wp-content/uploads/2011/10/nsconf11.gif" alt="NSCoders Apple Conference 2001" width="670" height="260" srcset="/wp-content/uploads/2011/10/nsconf11.gif 670w, /wp-content/uploads/2011/10/nsconf11-300x116.gif 300w" sizes="(max-width: 670px) 100vw, 670px" /></a><p class="wp-caption-text">NSCoders Apple Conference 2001</p></div>
<p style="text-align: justify;">¿Cómo? ¿Que aún no te has apuntado a la NSCoders Apple Conference 2011? ¡Pues ya estás tardando! Podrás ver allí a lo más granado de las distintas NSCoder Nights de toda España. Yo voy a impartir una de las sesiones. Así que ya sabes: no hay excusa para no invitarme a un café, o a un MacBook Air, lo que te venga mejor.</p>
<p style="text-align: justify;">Por si esto de la NSCoder te deja frío y no sabes de qué te hablo, <a href="/2011/10/04/primera-conferencia-de-la-asociacion-nscoders-espana/">te recuerdo</a> que las NSCoder Nights son reuniones de programadores, diseñadores, gente interesada en el desarrollo en plataforma Apple, que se juntan en un bar a charlar, tomar unas copas, e incluso programar. En <a href="/2010/11/12/nscoder-nights-sevilla/">Sevilla tenemos una muy animada</a>, a la que te invito a venir, si te pasas por la ciudad. Incluso <a href="/2010/11/30/como-crear-tu-propia-nscoder-night/">puedes montar la tuya propia</a>.</p>
<p style="text-align: justify;">El caso es que la idea ha cuajado, y han surgido como setas las NSCoders. Y claro, todos queremos más. Realmente nos da envidia la WWDC, pero es que es una pasta ir a San Francisco :-D. Y aquí va a ir gente de auténtico nivel. Yo voy de relleno.</p>
<p>No le des más vueltas y reserva ya. ¡Es gratis!. Vente en barco, en avión o en burro, pero vente con tu Mac.</p>
<p><strong>Keep coding!</strong></p>
]]></content:encoded>
			<wfw:commentRss>/2011/10/20/conferencia-nscoders-apple-conference-2011-ya-casi-esta-aqui/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
