<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2italianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Undolog.com</title><link>http://www.undolog.com</link><description>Research &amp; Development  Blog</description><language>en</language><lastBuildDate>Thu, 09 Jul 2009 00:53:07 PDT</lastBuildDate><generator>http://wordpress.org/?v=2.8</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-nd/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/undolog" type="application/rss+xml" /><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fundolog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/undolog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fundolog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fundolog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fundolog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=it&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fundolog" src="http://eur.i1.yimg.com/eur.yimg.com/i/it/my/mioya1.gif">Subscribe with Mio Yahoo!</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Very short trick: Wordpress, evidenziare i risultati di una ricerca</title><link>http://feedproxy.google.com/~r/undolog/~3/D6voCN__Elk/</link><category>PHP</category><category>Sviluppo</category><category>Tutorials</category><category>WordPress</category><category>get_the_excerpt()</category><category>Loop</category><category>Plugin</category><category>search</category><category>Search-Hilite</category><category>trick</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Thu, 09 Jul 2009 00:00:51 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=2158</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/QxRfMNIvEgRSkiGPXWiQllAuH6o/0/da"><img src="http://feedads.g.doubleclick.net/~a/QxRfMNIvEgRSkiGPXWiQllAuH6o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QxRfMNIvEgRSkiGPXWiQllAuH6o/1/da"><img src="http://feedads.g.doubleclick.net/~a/QxRfMNIvEgRSkiGPXWiQllAuH6o/1/di" border="0" ismap="true"></img></a></p><p>Esistono numerosi Plugin per Wordpress che permettono di migliorare le caratteristiche e le prestazioni della funzione "cerca". Quasi tutti i Plugin disponibili hanno l'utile e gradevole caratteristica di <strong>evidenziare le parole cercate nel risultato delle ricerca</strong>. Se non avete intenzione di appensantire ulteriormente la vostra installazione Wordpress ma non volete rinunciare del tutto ad una funzionalità simile, ecco come implementare facilmente un "evidenzia" dei termii di ricerca nei risultati.</p>
<p>Aprite il file <strong><code>search.php</code></strong> e inserire il seguente codice all'interno del loop centrale o, se utilizzate un tema standard, cercate il <strong><code>div class="entry"</code></strong>. In pratica andiamo a modificare l'emissione del risultato dopo una ricerca:</p>
<div class="igBar"><span id="lphp-2"><a href="#" onclick="javascript:showCodeTxt('php-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-2">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&lt;div class=&quot;entry&quot;&gt;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">&lt;?php</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Nella variabile $s c'è la stringa di ricerca</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ad esempio: parolaA parolaB</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #000088;">$keys</span> &nbsp; &nbsp;<span style="color: #339933;">=</span> <a href="http://www.php.net/explode"><span style="color: #990000;">explode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Prelevo il riassunto, non il testo intero</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #000088;">$excerpt</span> <span style="color: #339933;">=</span> get_the_excerpt<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// avvolgo nel riassunto le parole cercate</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// con &lt;strong class=&quot;evidenzia&quot;&gt;parolaA&lt;/strong&gt;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #000088;">$excerpt</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/preg_replace"><span style="color: #990000;">preg_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/('</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/implode"><span style="color: #990000;">implode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$keys</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">')/iu'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'&lt;strong class=&quot;evidenzia&quot;&gt;\0&lt;/strong&gt;'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$excerpt</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Mostro il riassunto alterato</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">echo</span> apply_filters<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;the_excerpt&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$excerpt</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">?&gt;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&lt;p class=&quot;right more&quot;&gt;&lt;a href=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> the_permalink<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt;Leggi tutto&lt;/a&gt;&lt;/p&gt;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&lt;/div&gt;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Tutte le parole inserite nel campo di ricerca saranno evidenziate (la classe CSS <code>evidenzia</code> potete definirla a piacere, ad esempio con un <code>background</code> giallino simile ad un evidenziatore... o quello che volete) nel risultato <strong>se presenti nel riassunto</strong>. Questa procedura, infatti, ha il limite di agire <strong>solo sulla prima parte del nostro post (excerpt)</strong> e non su tutto il suo contenuto. Tuttavia è una buona alternativa all'installazione di un ulteriore plugin.</p>

	Tags: <a href="http://www.undolog.com/tag/get_the_excerpt/" title="get_the_excerpt()" rel="tag">get_the_excerpt()</a>, <a href="http://www.undolog.com/tag/loop/" title="Loop" rel="tag">Loop</a>, <a href="http://www.undolog.com/category/sviluppo/internet/php/" title="PHP" rel="tag">PHP</a>, <a href="http://www.undolog.com/tag/php/" title="PHP" rel="tag">PHP</a>, <a href="http://www.undolog.com/tag/plugin/" title="Plugin" rel="tag">Plugin</a>, <a href="http://www.undolog.com/tag/search/" title="search" rel="tag">search</a>, <a href="http://www.undolog.com/tag/search-hilite/" title="Search-Hilite" rel="tag">Search-Hilite</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/trick/" title="trick" rel="tag">trick</a>, <a href="http://www.undolog.com/category/tutorials/" title="Tutorials" rel="tag">Tutorials</a>, <a href="http://www.undolog.com/category/sviluppo/internet/wordpress/" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.undolog.com/tag/wordpress/" title="WordPress" rel="tag">WordPress</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2008/11/01/wordpress-rimuovere-i-menu-dellamministrazione/" title="Wordpress: rimuovere i menu dell&#8217;amministrazione (1 novembre, 2008)">Wordpress: rimuovere i menu dell&#8217;amministrazione</a> (7)</li>
	<li><a href="http://www.undolog.com/2008/10/17/wordpress-modifcare-adminbigwidth-per-gli-sviluppatori/" title="Wordpress: modifcare AdminBigWidth per gli sviluppatori (17 ottobre, 2008)">Wordpress: modifcare AdminBigWidth per gli sviluppatori</a> (1)</li>
	<li><a href="http://www.undolog.com/2008/10/03/wordpress-come-scrivere-un-reply-to-comment-usando-jquery/" title="Wordpress: come scrivere un reply to comment usando jQuery (3 ottobre, 2008)">Wordpress: come scrivere un reply to comment usando jQuery</a> (18)</li>
	<li><a href="http://www.undolog.com/2008/12/22/wordpress-plugin-flash-feed-scroll-reader/" title="Wordpress Plugin: Flash Feed Scroll Reader (22 dicembre, 2008)">Wordpress Plugin: Flash Feed Scroll Reader</a> (7)</li>
	<li><a href="http://www.undolog.com/2009/03/12/very-short-trick-pagine-padri-e-pagine-figlie-in-wordpress/" title="Very short trick: pagine padri e pagine figlie in Wordpress (12 marzo, 2009)">Very short trick: pagine padri e pagine figlie in Wordpress</a> (1)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/D6voCN__Elk" height="1" width="1"/>]]></content:encoded><description>Esistono numerosi Plugin per Wordpress che permettono di migliorare le caratteristiche e le prestazioni della funzione "cerca". Quasi tutti i Plugin disponibili hanno l'utile e gradevole caratteristica di evidenziare le parole cercate nel risultato delle ricerca. Se non avete intenzione di appensantire ulteriormente la vostra installazione Wordpress ma non volete rinunciare del tutto ad una [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/07/09/very-short-trick-wordpress-evidenziare-i-risultati-di-una-ricerca/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/07/09/very-short-trick-wordpress-evidenziare-i-risultati-di-una-ricerca/</feedburner:origLink></item><item><title>Very short trick: Wordpress, escludere pagine e post dalla ricerca</title><link>http://feedproxy.google.com/~r/undolog/~3/anvmYypIrZc/</link><category>Internet</category><category>PHP</category><category>Sviluppo</category><category>WordPress</category><category>add_filter()</category><category>post__not_in</category><category>pre_get_posts</category><category>trick</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Wed, 08 Jul 2009 00:40:10 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=2146</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/fqU5XedHOFgd63V_rYZrQFIqyMI/0/da"><img src="http://feedads.g.doubleclick.net/~a/fqU5XedHOFgd63V_rYZrQFIqyMI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/fqU5XedHOFgd63V_rYZrQFIqyMI/1/da"><img src="http://feedads.g.doubleclick.net/~a/fqU5XedHOFgd63V_rYZrQFIqyMI/1/di" border="0" ismap="true"></img></a></p><p>Il motore interno di Wordpress sfruttato per la ricerca (quella standard senza l'aggiunta di plugin) effettua a basso livello una classica <code>query_post()</code>. La ricerca viene svolta dapperttutto, senza escludere nulla. Questa caratteristica può essere tuttavia controllata permettendo, ad esempio, di <strong>effettuare una ricerca su tutto tranne che in particolari categorie, pagine o post</strong>. Esistono vari modi per "filtrare" la ricerca standard di Wordpress, uno è sfruutando il filtro <code>pre_get_posts</code>:</p>
<div class="igBar"><span id="lphp-7"><a href="#" onclick="javascript:showCodeTxt('php-7'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-7">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">/**</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;* Inserire questo codice nel file functions.php</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">* &nbsp;Esclude dalla ricerca le pagine/post con id 26,27 e 32</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;*/</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> search_filter<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">is_search</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'post__not_in'</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>26<span style="color: #339933;">,</span>27<span style="color: #339933;">,</span>32<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$query</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'pre_get_posts'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'search_filter'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Questo filtro è interessante e permette di eseguire varie attività sulla nostra query di ricerca. Analizzando il parametro di ingresso <code>$query</code> si può avere un'idea delle operazioni che si possono svolgere:</p>
<div class="igBar"><span id="lphp-8"><a href="#" onclick="javascript:showCodeTxt('php-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-8">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> search_filter<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">is_search</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;pre&gt;'</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/pre&gt;'</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$query</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'pre_get_posts'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'search_filter'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Ad esempio è possibile <strong>escludere dalla ricerca particolari categorie</strong>:</p>
<div class="igBar"><span id="lphp-9"><a href="#" onclick="javascript:showCodeTxt('php-9'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-9">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">/**</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;* Inserire questo codice nel file functions.php</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;* Esclude la categoria con id 14</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;*/</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> search_filter<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">is_search</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'cat'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'-14'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$query</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'pre_get_posts'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'search_filter'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>La prima <code>if</code> nel codice determina in che modalità siamo, in questo caso <code>search</code>. Questo significa che possiamo applicare questo filtro anche in altri contesti, come ad esempio:</p>
<div class="igBar"><span id="lphp-10"><a href="#" onclick="javascript:showCodeTxt('php-10'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-10">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">/**</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;* Inserire questo codice nel file functions.php</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;* Esclude la categoria con id 14 dai Feed</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;*/</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> search_filter<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">is_feed</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'cat'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'-14'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$query</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'pre_get_posts'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'search_filter'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>

	Tags: <a href="http://www.undolog.com/tag/add_filter/" title="add_filter()" rel="tag">add_filter()</a>, <a href="http://www.undolog.com/category/sviluppo/internet/" title="Internet" rel="tag">Internet</a>, <a href="http://www.undolog.com/category/sviluppo/internet/php/" title="PHP" rel="tag">PHP</a>, <a href="http://www.undolog.com/tag/post__not_in/" title="post__not_in" rel="tag">post__not_in</a>, <a href="http://www.undolog.com/tag/pre_get_posts/" title="pre_get_posts" rel="tag">pre_get_posts</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/trick/" title="trick" rel="tag">trick</a>, <a href="http://www.undolog.com/category/sviluppo/internet/wordpress/" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.undolog.com/tag/wordpress/" title="WordPress" rel="tag">WordPress</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/07/09/very-short-trick-wordpress-evidenziare-i-risultati-di-una-ricerca/" title="Very short trick: Wordpress, evidenziare i risultati di una ricerca (9 luglio, 2009)">Very short trick: Wordpress, evidenziare i risultati di una ricerca</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/03/12/very-short-trick-pagine-padri-e-pagine-figlie-in-wordpress/" title="Very short trick: pagine padri e pagine figlie in Wordpress (12 marzo, 2009)">Very short trick: pagine padri e pagine figlie in Wordpress</a> (1)</li>
	<li><a href="http://www.undolog.com/2009/07/02/very-short-snippet-wordpress-prossimamente-sul-vostro-blog/" title="Very short snippet: Wordpress, prossimamente sul vostro blog (2 luglio, 2009)">Very short snippet: Wordpress, prossimamente sul vostro blog</a> (1)</li>
	<li><a href="http://www.undolog.com/2009/05/28/very-short-snippet-php-slug/" title="Very short snippet: PHP slug (28 maggio, 2009)">Very short snippet: PHP slug</a> (9)</li>
	<li><a href="http://www.undolog.com/2008/09/08/wp-abs-ver111-su-wordpressorg/" title="WP-ABS: Ver.1.11 su WordPress.org (8 settembre, 2008)">WP-ABS: Ver.1.11 su WordPress.org</a> (5)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/anvmYypIrZc" height="1" width="1"/>]]></content:encoded><description>Il motore interno di Wordpress sfruttato per la ricerca (quella standard senza l'aggiunta di plugin) effettua a basso livello una classica query_post(). La ricerca viene svolta dapperttutto, senza escludere nulla. Questa caratteristica può essere tuttavia controllata permettendo, ad esempio, di effettuare una ricerca su tutto tranne che in particolari categorie, pagine o post. Esistono vari [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/07/08/very-short-trick-wordpress-escludere-pagine-e-post-dalla-ricerca/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.undolog.com/2009/07/08/very-short-trick-wordpress-escludere-pagine-e-post-dalla-ricerca/</feedburner:origLink></item><item><title>Apple iPhone: The First Release 1.2</title><link>http://feedproxy.google.com/~r/undolog/~3/fzWlorrKT0Q/</link><category>Eventi &amp; Iniziative</category><category>Featured</category><category>Mobile</category><category>Software</category><category>Videogames</category><category>Apple</category><category>AppStore</category><category>iPhone</category><category>Saidmade</category><category>Videogame</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Mon, 06 Jul 2009 01:33:54 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=2092</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/X6aeLJWTxyzLZszC2Dri18Rdnek/0/da"><img src="http://feedads.g.doubleclick.net/~a/X6aeLJWTxyzLZszC2Dri18Rdnek/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/X6aeLJWTxyzLZszC2Dri18Rdnek/1/da"><img src="http://feedads.g.doubleclick.net/~a/X6aeLJWTxyzLZszC2Dri18Rdnek/1/di" border="0" ismap="true"></img></a></p><p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/07/thefirst12claim.png" alt="thefirst12claim" title="thefirst12claim" width="619" height="478" /></p>
<p><a href="itms://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=318806353&#038;mt=8&#038;s=143441">Disponibile su AppStore l'aggiornamento alla release 1.2 di TheFirst</a>. Ecco le release notes:</p>
<ul>
<li>Rivista completamente tutta la grafica del gioco, che ora è notevolmente più gradevole</li>
<li>Compatibilità con Apple iPhone 3.0</li>
<li>Aggiunti effetti sonori</li>
<li>Rivista e migliorata la navigabilità tra il gioco e le istruzioni</li>
</ul>

	Tags: <a href="http://www.undolog.com/tag/apple/" title="Apple" rel="tag">Apple</a>, <a href="http://www.undolog.com/tag/appstore/" title="AppStore" rel="tag">AppStore</a>, <a href="http://www.undolog.com/category/eventi-iniziative/" title="Eventi &amp; Iniziative" rel="tag">Eventi &amp; Iniziative</a>, <a href="http://www.undolog.com/category/featured/" title="Featured" rel="tag">Featured</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/saidmade/" title="Saidmade" rel="tag">Saidmade</a>, <a href="http://www.undolog.com/category/software/" title="Software" rel="tag">Software</a>, <a href="http://www.undolog.com/tag/videogame/" title="Videogame" rel="tag">Videogame</a>, <a href="http://www.undolog.com/category/videogames/" title="Videogames" rel="tag">Videogames</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/09/the-first-disponibile-su-itunes/" title="The First: disponibile su iTunes (9 giugno, 2009)">The First: disponibile su iTunes</a> (1)</li>
	<li><a href="http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/" title="Very short trick: fermare NSTimer (16 giugno, 2009)">Very short trick: fermare NSTimer</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/23/objective-c-conversione-dei-tipi/" title="Objective-C: conversione dei tipi (23 giugno, 2009)">Objective-C: conversione dei tipi</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
	<li><a href="http://www.undolog.com/2007/01/26/iphone-il-wap-e-morto/" title="iPhone: il WAP è morto? (26 gennaio, 2007)">iPhone: il WAP è morto?</a> (2)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/fzWlorrKT0Q" height="1" width="1"/>]]></content:encoded><description>Nuova release di TheFirst per Apple iPhone: aggiornato alle SDK 3.0, nuova grafica ed effetti sonori</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/07/06/apple-iphone-the-first-release-1-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.undolog.com/2009/07/06/apple-iphone-the-first-release-1-2/</feedburner:origLink></item><item><title>Wordpress: usare gli shortcodes</title><link>http://feedproxy.google.com/~r/undolog/~3/mNz3Wp4U7Go/</link><category>Internet</category><category>PHP</category><category>Sviluppo</category><category>Tutorials</category><category>WordPress</category><category>add_shortcode()</category><category>functions.php</category><category>hook</category><category>shortcodes</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Thu, 02 Jul 2009 22:00:15 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1949</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/8PwKrX6xL0hJ1__MZheBZz0XoqQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/8PwKrX6xL0hJ1__MZheBZz0XoqQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/8PwKrX6xL0hJ1__MZheBZz0XoqQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/8PwKrX6xL0hJ1__MZheBZz0XoqQ/1/di" border="0" ismap="true"></img></a></p><p>Dalla versione 2.5 di Wordpress (meglio 2.5.1) sono disponibili i cosidetti <strong><a target="_blank" href="http://codex.wordpress.org/Shortcode_API">shortcodes</a></strong>, una procedura che permette di creare delle callback, o meglio degli hook, quando nel testo del nostro post viene trovata una stringa formattata con le parentesi quadre tipo <code>[id_shortcode]</code>. Prima della release 2.5 di Wordpress gli shortcodes erano implementati manualmente (vedi <a target="_blank" href="http://www.napolux.com/2008/wordpress-add_filter-e-altre-amenita.html">Napolux</a>), ora è possibile sfruttarli con più semplicità e per gli usi più disparati.</p>
<h4>Sintassi</h4>
<p>Per utilizzare gli shortcodes è sufficente creare una funzione di hook, con dei parametri standard e impostare lo shortcodes tramite <code>add_shortcode()</code>:</p>
<div class="igBar"><span id="lphp-24"><a href="#" onclick="javascript:showCodeTxt('php-24'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-24">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">/**</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;* Questo è il prototipo della funzione di hook</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;*/</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> mio_shortcode_hook<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$attrs</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// codice qui</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;Output nel post&quot;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">/**</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;* add_shortcode() accetta due parametri:</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;*</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;* @param string $tag Shortcode tag to be searched in post content.</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;* @param callable $func Hook to run when shortcode is found.</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009933; font-style: italic;">&nbsp;*/</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">add_shortcode<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;mio_shortcode&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;mio_shortcodes_hook&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Questo codice può essere posizionato nel file <code>functions.php</code>. Durante la scrittura del post inserendo <code>mio_shortcode</code> tra parentesi quadre sarà eseguito il codice dell'hook (della funzione) <code>mio_shortcode_hook()</code>.</p>
<p>La funzione di hook, e il nostro shortcode, possono essere utilizzati in vari modi a seconda delle necessità:</p>
<div class="igBar"><span id="lhtml-25"><a href="#" onclick="javascript:showCodeTxt('html-25'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-25">
<div class="html" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- solo shortcode --&gt;</span></span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">[mio_shortcode]</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- con attributi --&gt;</span></span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">[mio_shortcode color='#000000']</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- con contenuto incluso --&gt;</span></span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">[mio_shortcode color='#000000']Sono il contenuto[/mio_shortcode]</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<blockquote><p><del datetime="2009-07-03T15:55:26+00:00"><strong>Note</strong>: nel codice qui sopra ho dovuto inserire uno spazio nello shortcode di chiusura tra l'apertura della parentesi quadra e lo slash. Tale spazio andrà eliminato nel vostro codice. Tutto questo a causa di un conflitto con il plugin che uso per visualizzare il codice, in quanto anc'esso usa una sintassi simile a quella degli shortcode</del></p>
</blockquote>
<h4>Gestione degli attributi</h4>
<p>Gli attributi inseriti in uno shortcode sono facilissimi da gestire ed è possibile impostare dei valore di default. Ecco ad esempio come creare uno shortcode che gestisca un titolo formattato in modo speciale:</p>
<div class="igBar"><span id="lphp-26"><a href="#" onclick="javascript:showCodeTxt('php-26'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-26">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> mio_shortcode_hook<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$attrs</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <a href="http://www.php.net/extract"><span style="color: #990000;">extract</span></a><span style="color: #009900;">&#40;</span> shortcode_atts<span style="color: #009900;">&#40;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'attr_1'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'attributo 1 default'</span><span style="color: #339933;">,</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'attr_2'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'attributo 2 default'</span><span style="color: #339933;">,</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ...etc</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$attrs</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ...</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Similmente a come abbiamo visto in <em><a href="http://www.undolog.com/2009/01/05/wordpress-wp_parse_args/">Wordpress: wp_parse_args()</a></em> , la gestione degli attributi è davvero semplice e permette di impostare dei valori di default in caso di assenza degli attributi stessi. Il codice sopra esposto "fonde" l'array <code>$attrs</code> con quello dinamico tramite la funzione <code>shortcode_atts()</code> (cugina della <code>wp_parse_args()</code>), rendendo disponibile nello scope della funzione (vedi <a target="_blank" href="http://php.net/extract"><code>extract()</code></a>) gli attributi come variabili. Gli attributi devono essere tutti in lowercase!</p>
<h4>Gestione del contenuto</h4>
<p>La modalità con il content è quella più versatile in particolari casi, ecco un esempio chiarificatore:</p>
<div class="igBar"><span id="lphp-27"><a href="#" onclick="javascript:showCodeTxt('php-27'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-27">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> make_title_shortcode<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$attrs</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp;<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'&lt;h1 title=&quot;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot;&gt;&lt;span&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/span&gt;&lt;/h1&gt;'</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">add_shortcode<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'my-title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'make_title_shortcode'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Utilizzando lo shortcode nel nostro post:</p>
<div class="igBar"><span id="lhtml-28"><a href="#" onclick="javascript:showCodeTxt('html-28'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-28">
<div class="html" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">[my-title]Questo è un titolo[/my-title]</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Avremo come output:</p>
<div class="igBar"><span id="lhtml-29"><a href="#" onclick="javascript:showCodeTxt('html-29'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-29">
<div class="html" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;"><a href="http://december.com/html/4/element/%26amp%3Blt%3CSEMI%3Eh1.html"><span style="color: #000000; font-weight: bold;">&lt;h1</span></a> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Questo è un titolo&quot;</span>&gt;&lt;span&gt;</span>Questo è un titolo<span style="color: #009900;"><a href="http://december.com/html/4/element/%26amp%3Blt%3CSEMI%3E.html"><span style="color: #000000; font-weight: bold;">&lt;</span></a><span style="color: #66cc66;">/</span>span&gt;&lt;<span style="color: #66cc66;">/</span>h1&gt;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Possiamo migliorare il nostro esempio introducento anche degli attributi per rendere più personalizzabile il nostro shortcode:</p>
<div class="igBar"><span id="lphp-30"><a href="#" onclick="javascript:showCodeTxt('php-30'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-30">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> make_title_shortcode<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$attrs</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <a href="http://www.php.net/extract"><span style="color: #990000;">extract</span></a><span style="color: #009900;">&#40;</span> shortcode_atts<span style="color: #009900;">&#40;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'class'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'my-title'</span><span style="color: #339933;">,</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$attrs</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp;<span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'&lt;h1 class=&quot;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$class</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot; title=&quot;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot;&gt;&lt;span&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/span&gt;&lt;/h1&gt;'</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="igBar"><span id="lhtml-31"><a href="#" onclick="javascript:showCodeTxt('html-31'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-31">
<div class="html" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">[my-title class=&quot;color-red&quot;]Questo è un titolo[/my-title]</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="igBar"><span id="lhtml-32"><a href="#" onclick="javascript:showCodeTxt('html-32'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-32">
<div class="html" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;"><a href="http://december.com/html/4/element/%26amp%3Blt%3CSEMI%3Eh1.html"><span style="color: #000000; font-weight: bold;">&lt;h1</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;color-red&quot;</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Questo è un titolo&quot;</span>&gt;&lt;span&gt;</span>Questo è un titolo<span style="color: #009900;"><a href="http://december.com/html/4/element/%26amp%3Blt%3CSEMI%3E.html"><span style="color: #000000; font-weight: bold;">&lt;</span></a><span style="color: #66cc66;">/</span>span&gt;&lt;<span style="color: #66cc66;">/</span>h1&gt;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Come già indicato potete trovare molte informazioni sulla <a target="_blank" href="http://codex.wordpress.org/Shortcode_API">documentazine ufficiale di Wordpress</a>. Ecco qualche utile shortcode.</p>
<h4>Mostrare AdSense nei post</h4>
<p>Inserire il codice qui sotto nel vostro file <code>functions.php</code>. Cambiate i codice Google AdSense con i vostri.</p>
<div class="igBar"><span id="lphp-33"><a href="#" onclick="javascript:showCodeTxt('php-33'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-33">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> show_adsense<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #0000ff;"> &nbsp; &nbsp; &nbsp; &nbsp;google_ad_client = &quot;pub-9877654123213210&quot;;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #0000ff;"> &nbsp; &nbsp; &nbsp; &nbsp;google_ad_slot = &quot;9876543210&quot;;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #0000ff;"> &nbsp; &nbsp; &nbsp; &nbsp;google_ad_width = 468;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #0000ff;"> &nbsp; &nbsp; &nbsp; &nbsp;google_ad_height = 60;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #0000ff;"> &nbsp; &nbsp; &nbsp; &nbsp;//--&gt;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #0000ff;"> &nbsp; &nbsp; &nbsp; &nbsp;&lt;/script&gt;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #0000ff;"> &nbsp; &nbsp; &nbsp; &nbsp;&lt;script type=&quot;text/javascript&quot; src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;&lt;/script&gt;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #0000ff;"> &nbsp; &nbsp; &nbsp; &nbsp;'</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">add_shortcode<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'myadsense'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'adsense'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Nel posto basta inserire:</p>
<div class="igBar"><span id="lhtml-34"><a href="#" onclick="javascript:showCodeTxt('html-34'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-34">
<div class="html" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">[myadsense]</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h4>Aggiungere note ad un post visibile solo dall'amministratore</h4>
<p>Questo shortcode permette di aggiungere delle note ad un post visibili solo ad un amministratore.</p>
<div class="igBar"><span id="lphp-35"><a href="#" onclick="javascript:showCodeTxt('php-35'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-35">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">function</span> admin_note<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$attrs</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> current_user_can<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'publish_posts'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'&lt;div class=&quot;admin-note&quot;&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/div&gt;'</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">add_shortcode<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'admin-note'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'admin_note'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="igBar"><span id="lhtml-36"><a href="#" onclick="javascript:showCodeTxt('html-36'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-36">
<div class="html" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">[note]Questa nota è visibile solo agli amministratori del blog[/note]</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Pubblicherò in futuro altri shortcode utili...</p>

	Tags: <a href="http://www.undolog.com/tag/add_shortcode/" title="add_shortcode()" rel="tag">add_shortcode()</a>, <a href="http://www.undolog.com/tag/functionsphp/" title="functions.php" rel="tag">functions.php</a>, <a href="http://www.undolog.com/tag/hook/" title="hook" rel="tag">hook</a>, <a href="http://www.undolog.com/category/sviluppo/internet/" title="Internet" rel="tag">Internet</a>, <a href="http://www.undolog.com/category/sviluppo/internet/php/" title="PHP" rel="tag">PHP</a>, <a href="http://www.undolog.com/tag/php/" title="PHP" rel="tag">PHP</a>, <a href="http://www.undolog.com/tag/shortcodes/" title="shortcodes" rel="tag">shortcodes</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/category/tutorials/" title="Tutorials" rel="tag">Tutorials</a>, <a href="http://www.undolog.com/tag/tutorials/" title="Tutorials" rel="tag">Tutorials</a>, <a href="http://www.undolog.com/category/sviluppo/internet/wordpress/" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.undolog.com/tag/wordpress/" title="WordPress" rel="tag">WordPress</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2008/11/01/wordpress-rimuovere-i-menu-dellamministrazione/" title="Wordpress: rimuovere i menu dell&#8217;amministrazione (1 novembre, 2008)">Wordpress: rimuovere i menu dell&#8217;amministrazione</a> (7)</li>
	<li><a href="http://www.undolog.com/2009/01/16/wordpress-functionsphp-qualche-funzione-utile/" title="Wordpress: functions.php, qualche funzione utile (16 gennaio, 2009)">Wordpress: functions.php, qualche funzione utile</a> (0)</li>
	<li><a href="http://www.undolog.com/2008/10/03/wordpress-come-scrivere-un-reply-to-comment-usando-jquery/" title="Wordpress: come scrivere un reply to comment usando jQuery (3 ottobre, 2008)">Wordpress: come scrivere un reply to comment usando jQuery</a> (18)</li>
	<li><a href="http://www.undolog.com/2008/10/24/wordpress-come-creare-passo-passo-un-proprio-login/" title="Wordpress: come creare passo passo un proprio login (24 ottobre, 2008)">Wordpress: come creare passo passo un proprio login</a> (17)</li>
	<li><a href="http://www.undolog.com/2008/07/16/usare-i-template-wordpress-per-creare-una-sitemap/" title="Usare i Template WordPress per creare una Sitemap (16 luglio, 2008)">Usare i Template WordPress per creare una Sitemap</a> (4)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/mNz3Wp4U7Go" height="1" width="1"/>]]></content:encoded><description>Dalla versione 2.5 di Wordpress (meglio 2.5.1) sono disponibili i cosidetti shortcodes, una procedura che permette di creare delle callback, o meglio degli hook, quando nel testo del nostro post viene trovata una stringa formattata con le parentesi quadre tipo [id_shortcode]. Prima della release 2.5 di Wordpress gli shortcodes erano implementati manualmente (vedi Napolux), ora [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/07/03/wordpress-usare-gli-shortcodes/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><feedburner:origLink>http://www.undolog.com/2009/07/03/wordpress-usare-gli-shortcodes/</feedburner:origLink></item><item><title>Wordpress: eliminare i post duplicati nei loop multipli</title><link>http://feedproxy.google.com/~r/undolog/~3/VTuIypr0IoA/</link><category>Internet</category><category>PHP</category><category>Sviluppo</category><category>WordPress</category><category>Loop</category><category>POST</category><category>query_posts()</category><category>Snipp</category><category>WP_Query</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Thu, 02 Jul 2009 06:40:55 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1933</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/pME5tbngDZ9lBCNRZPMycxXT6w0/0/da"><img src="http://feedads.g.doubleclick.net/~a/pME5tbngDZ9lBCNRZPMycxXT6w0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pME5tbngDZ9lBCNRZPMycxXT6w0/1/da"><img src="http://feedads.g.doubleclick.net/~a/pME5tbngDZ9lBCNRZPMycxXT6w0/1/di" border="0" ismap="true"></img></a></p><p>L'utilissima funzione <strong><code>query_posts()</code></strong> o l'oggetto <code>WP_Query</code> (che poi sono fondamentalmente la stessa cosa) di Wordpress permette di ottenere una lista di post impostando numerosi parametri di ricerca (vedi <em><a href="http://www.undolog.com/2009/06/05/very-short-snippet-visualizzare-una-lista-di-post-per-categoria-o-tag/">Very short snippet: visualizzare una lista di post per categoria o tag</a></em>). Proprio a causa della sua versatilità nella ricerca dei post può capitare che usando la funzione due o più volte di seguito si ottengano dei "duplicati". Questo può accadere, ad esempio, quando si cerca (filtra) per TAG; un post, infatti, può (anzi ha, nella maggioranza dei casi) avere associati più tag. Ne deriva che la lista dei post con <code>TAG A</code> può presentare un post presente anche nella lista dei post con <code>TAG B</code>.</p>
<p>Per eliminare il problema si può procedere in due modi diversi, in base alla versione di Wordpress. Il primo consiste nel mettere da parte tutti gli ID del primo loop così da escluderli nel secondo. Questa tecnica può essere utilizzata per qualsiasi numero di loop e al il vantaggio di essere compatibile anche con le vecchie versioni di Wordpress:</p>
<div class="igBar"><span id="lphp-39"><a href="#" onclick="javascript:showCodeTxt('php-39'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-39">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// Primo loop</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// L'array $ids[] usato sotto serve a tenere traccia degli</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// id dei post che sono uscito con il primo loop</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000088;">$ids</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">query_posts<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'category_name=Flash&amp;showposts=10'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>have_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> the_post<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #000088;">$ids</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ... output</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #b1b100;">endwhile</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// Secondo loop</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// In questo caso l'output avviene solo nel cosa che</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// $post-&gt;ID non sia presente nell'array $ids[]</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">query_posts<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'category_name=Adobe&amp;showposts=10'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>have_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> the_post<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/in_array"><span style="color: #990000;">in_array</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ids</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ... output</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp;<span style="color: #009900;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #b1b100;">endwhile</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Se la release di Wordpress che stiamo usando è la 2.6 o superiore, possiamo applicare una comodoa variante al secondo loop:</p>
<div class="igBar"><span id="lphp-40"><a href="#" onclick="javascript:showCodeTxt('php-40'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-40">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// Secondo loop</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// Wordpress 2.6+</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// In questo caso è direttamente la query_posts() ad</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #666666; font-style: italic;">// escludere gli ID dei post già visualizzati</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">query_posts<span style="color: #009900;">&#40;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'showposts'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;color:#800000;">10</span><span style="color: #339933;">,</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'cat'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;color:#800000;">4</span><span style="color: #339933;">,</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'post__not_in'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$ids</span><span style="color: #339933;">,</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>have_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> the_post<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ... output</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #b1b100;">endwhile</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>L'opzione <a target="_blank" href="http://codex.wordpress.org/Template_Tags/query_posts#Post_.26_Page_Parameters"><code>post__not_in</code></a> insieme ad altre è ben documentata <a target="_blank" href="http://codex.wordpress.org/Template_Tags/query_posts#Post_.26_Page_Parameters">qui</a>.</p>

	Tags: <a href="http://www.undolog.com/category/sviluppo/internet/" title="Internet" rel="tag">Internet</a>, <a href="http://www.undolog.com/tag/loop/" title="Loop" rel="tag">Loop</a>, <a href="http://www.undolog.com/category/sviluppo/internet/php/" title="PHP" rel="tag">PHP</a>, <a href="http://www.undolog.com/tag/post/" title="POST" rel="tag">POST</a>, <a href="http://www.undolog.com/tag/query_posts/" title="query_posts()" rel="tag">query_posts()</a>, <a href="http://www.undolog.com/tag/snipp/" title="Snipp" rel="tag">Snipp</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/category/sviluppo/internet/wordpress/" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.undolog.com/tag/wordpress/" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.undolog.com/tag/wp_query/" title="WP_Query" rel="tag">WP_Query</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/05/very-short-snippet-visualizzare-una-lista-di-post-per-categoria-o-tag/" title="Very short snippet: visualizzare una lista di post per categoria o tag (5 giugno, 2009)">Very short snippet: visualizzare una lista di post per categoria o tag</a> (1)</li>
	<li><a href="http://www.undolog.com/2009/03/20/very-short-snippet-come-recuperare-la-categoria-padre-in-wordpress/" title="Very short snippet: come recuperare la categoria padre in Wordpress (20 marzo, 2009)">Very short snippet: come recuperare la categoria padre in Wordpress</a> (2)</li>
	<li><a href="http://www.undolog.com/2009/01/05/wordpress-wp_parse_args/" title="Wordpress: wp_parse_args() (5 gennaio, 2009)">Wordpress: wp_parse_args()</a> (3)</li>
	<li><a href="http://www.undolog.com/2009/03/23/wordpress-ordinare-una-serie-di-post-per-un-campo-qualsiasi/" title="Wordpress: ordinare una serie di post per un campo qualsiasi (23 marzo, 2009)">Wordpress: ordinare una serie di post per un campo qualsiasi</a> (0)</li>
	<li><a href="http://www.undolog.com/2008/10/03/wordpress-come-scrivere-un-reply-to-comment-usando-jquery/" title="Wordpress: come scrivere un reply to comment usando jQuery (3 ottobre, 2008)">Wordpress: come scrivere un reply to comment usando jQuery</a> (18)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/VTuIypr0IoA" height="1" width="1"/>]]></content:encoded><description>L'utilissima funzione query_posts() o l'oggetto WP_Query (che poi sono fondamentalmente la stessa cosa) di Wordpress permette di ottenere una lista di post impostando numerosi parametri di ricerca (vedi Very short snippet: visualizzare una lista di post per categoria o tag). Proprio a causa della sua versatilità nella ricerca dei post può capitare che usando la [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/07/02/wordpress-eliminare-i-post-duplicati-nei-loop-multipli/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://www.undolog.com/2009/07/02/wordpress-eliminare-i-post-duplicati-nei-loop-multipli/</feedburner:origLink></item><item><title>XCode 3.1.3: ripristinare le SDK 2.2.1</title><link>http://feedproxy.google.com/~r/undolog/~3/J7mHiHts-f8/</link><category>Mobile</category><category>Objective-C</category><category>Software</category><category>Sviluppo</category><category>iPhone</category><category>SDK 2.2.1</category><category>SDK 3.0</category><category>XCode</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Thu, 02 Jul 2009 02:33:50 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=2075</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/A52vI39HW2siGIiHVFCkLFT7x9Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/A52vI39HW2siGIiHVFCkLFT7x9Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/A52vI39HW2siGIiHVFCkLFT7x9Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/A52vI39HW2siGIiHVFCkLFT7x9Q/1/di" border="0" ismap="true"></img></a></p><p>Ai soli sviluppatori registrati è già stata rilasciata una <strong>nuova versione delle SDK per Apple iPhone</strong>, è quindi giunto il momento di installare le <strong>SDK 3.0</strong> aggiornando così l'intero ambiente di sviluppo: <strong>XCode alla versione 3.1.3</strong>. Se avete già effettuato l'upgrade vi sarete accorti che creando un nuovo progetto sembrano <strong>scomparse le vecchie SDK 2.2.1</strong> (comprese le altre).</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/07/xcode313.png" alt="xcode313" title="xcode313" width="500" height="332" /></p>
<p>In realtà è tutto presente sulla nostra macchina, basta infatti eseguire una semplice procedura per ripristinare magicamente tutte le nostre SDK precedenti, così da provare la nostra applicazione per Apple iPhone sia con le SDK 3.0 che con le precedenti versioni 2.2.1 e minori. Selezionate il progetto, aprite il menu contestuale e selezionate <strong>Get Info</strong>:</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/07/xcode131menu.png" alt="xcode131menu" title="xcode131menu" width="280" height="265" /></p>
<p>Nella finestra che si aprirà, nella prima scheda <strong>General</strong>, in basso selezionate <strong>Base SDK for All Configurations</strong> e <strong>ripristinate le SDK 2.2.1</strong> (o quello che volete).</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/07/xcode313info.png" alt="xcode313info" title="xcode313info" width="470" height="495" /></p>
<p>Fatto questo, magicamente, il menu di XCode rivisualizzerà tutte le SDK compresa la 3.0</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/07/xcode313ok.png" alt="xcode313ok" title="xcode313ok" width="308" height="305" /></p>

	Tags: <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/tag/sdk-2-2-1/" title="SDK 2.2.1" rel="tag">SDK 2.2.1</a>, <a href="http://www.undolog.com/tag/sdk-3-0/" title="SDK 3.0" rel="tag">SDK 3.0</a>, <a href="http://www.undolog.com/category/software/" title="Software" rel="tag">Software</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/xcode/" title="XCode" rel="tag">XCode</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/19/iphone-objective-c-equivalenza-nella-sintassi/" title="iPhone Objective-C: equivalenza nella sintassi (19 giugno, 2009)">iPhone Objective-C: equivalenza nella sintassi</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/" title="iPhone FirstApp: indovina il numero &#8211; parte 1 (23 giugno, 2009)">iPhone FirstApp: indovina il numero &#8211; parte 1</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/01/hi-phone/" title="Hi phone (1 giugno, 2009)">Hi phone</a> (6)</li>
	<li><a href="http://www.undolog.com/2009/06/26/come-eliminare-nslog-dai-sorgenti-xcode/" title="Come eliminare NSLog() dai sorgenti XCode (26 giugno, 2009)">Come eliminare NSLog() dai sorgenti XCode</a> (0)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/J7mHiHts-f8" height="1" width="1"/>]]></content:encoded><description>Ai soli sviluppatori registrati è già stata rilasciata una nuova versione delle SDK per Apple iPhone, è quindi giunto il momento di installare le SDK 3.0 aggiornando così l'intero ambiente di sviluppo: XCode alla versione 3.1.3. Se avete già effettuato l'upgrade vi sarete accorti che creando un nuovo progetto sembrano scomparse le vecchie SDK 2.2.1 [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/07/02/xcode-3-1-3-ripristinare-le-sdk-2-2-1/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/07/02/xcode-3-1-3-ripristinare-le-sdk-2-2-1/</feedburner:origLink></item><item><title>Very short snippet: Wordpress, prossimamente sul vostro blog</title><link>http://feedproxy.google.com/~r/undolog/~3/8QVWnExHNtw/</link><category>Internet</category><category>PHP</category><category>Sviluppo</category><category>WordPress</category><category>blog</category><category>Blogger</category><category>POST</category><category>Schedule</category><category>Snippets</category><category>tips-&amp;-tricks</category><category>trick</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Wed, 01 Jul 2009 16:10:21 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1929</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/kSIyFTfMP7laIsf3PWUYojE5YyA/0/da"><img src="http://feedads.g.doubleclick.net/~a/kSIyFTfMP7laIsf3PWUYojE5YyA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/kSIyFTfMP7laIsf3PWUYojE5YyA/1/da"><img src="http://feedads.g.doubleclick.net/~a/kSIyFTfMP7laIsf3PWUYojE5YyA/1/di" border="0" ismap="true"></img></a></p><p>Wordpress, come quasi tutti saprete, permette di pubblicare un post "post-datato" (ottimo gioco di parole). In pratica il post viene memorizzato con una data che deve ancora arrivare. Questo permette a molti blogger di "schedulare" (programmare) la pubblicazione di post senza preoccuparsi di essere fisicamente presenti in console per la pubblicazione vera e propria. Inoltre permette di mantenere la pubblicazione di post costante anche quando siamo in vacanza. A qualcuno, allora, potrebbe interessare questa funzione in grado di visualizzare i post programmati, cioè quelli non ancora effettivamente pubblicati:</p>
<div class="igBar"><span id="lphp-42"><a href="#" onclick="javascript:showCodeTxt('php-42'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-42">
<div class="php" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&lt;p&gt;Prossimamente&lt;/p&gt;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> query_posts<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'showposts=5&amp;post_status=future'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> have_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> have_posts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> the_post<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&lt;div&gt;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &lt;h2&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> the_title<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/h2&gt;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&lt;/div&gt;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endwhile</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">else</span><span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&lt;p&gt;Nessun post programmato&lt;/p&gt;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>L'output può essere personalizzato a piacimento, essendo un normalissimo loop di Wordpress.</p>

	Tags: <a href="http://www.undolog.com/tag/blog/" title="blog" rel="tag">blog</a>, <a href="http://www.undolog.com/tag/blogger/" title="Blogger" rel="tag">Blogger</a>, <a href="http://www.undolog.com/category/sviluppo/internet/" title="Internet" rel="tag">Internet</a>, <a href="http://www.undolog.com/tag/internet/" title="Internet" rel="tag">Internet</a>, <a href="http://www.undolog.com/category/sviluppo/internet/php/" title="PHP" rel="tag">PHP</a>, <a href="http://www.undolog.com/tag/php/" title="PHP" rel="tag">PHP</a>, <a href="http://www.undolog.com/tag/post/" title="POST" rel="tag">POST</a>, <a href="http://www.undolog.com/tag/schedule/" title="Schedule" rel="tag">Schedule</a>, <a href="http://www.undolog.com/tag/snippets/" title="Snippets" rel="tag">Snippets</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/tips-tricks/" title="tips-&amp;-tricks" rel="tag">tips-&amp;-tricks</a>, <a href="http://www.undolog.com/tag/trick/" title="trick" rel="tag">trick</a>, <a href="http://www.undolog.com/category/sviluppo/internet/wordpress/" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.undolog.com/tag/wordpress/" title="WordPress" rel="tag">WordPress</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2008/10/27/wordpress-scrivere-un-logout-personale/" title="Wordpress: scrivere un logout personale (27 ottobre, 2008)">Wordpress: scrivere un logout personale</a> (1)</li>
	<li><a href="http://www.undolog.com/2008/11/01/wordpress-rimuovere-i-menu-dellamministrazione/" title="Wordpress: rimuovere i menu dell&#8217;amministrazione (1 novembre, 2008)">Wordpress: rimuovere i menu dell&#8217;amministrazione</a> (7)</li>
	<li><a href="http://www.undolog.com/2008/10/03/wordpress-come-scrivere-un-reply-to-comment-usando-jquery/" title="Wordpress: come scrivere un reply to comment usando jQuery (3 ottobre, 2008)">Wordpress: come scrivere un reply to comment usando jQuery</a> (18)</li>
	<li><a href="http://www.undolog.com/2008/10/02/very-short-trick-php-auto-echo/" title="Very short trick: PHP auto echo (2 ottobre, 2008)">Very short trick: PHP auto echo</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/03/12/very-short-trick-pagine-padri-e-pagine-figlie-in-wordpress/" title="Very short trick: pagine padri e pagine figlie in Wordpress (12 marzo, 2009)">Very short trick: pagine padri e pagine figlie in Wordpress</a> (1)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/8QVWnExHNtw" height="1" width="1"/>]]></content:encoded><description>Wordpress, come quasi tutti saprete, permette di pubblicare un post "post-datato" (ottimo gioco di parole). In pratica il post viene memorizzato con una data che deve ancora arrivare. Questo permette a molti blogger di "schedulare" (programmare) la pubblicazione di post senza preoccuparsi di essere fisicamente presenti in console per la pubblicazione vera e propria. Inoltre [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/07/02/very-short-snippet-wordpress-prossimamente-sul-vostro-blog/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.undolog.com/2009/07/02/very-short-snippet-wordpress-prossimamente-sul-vostro-blog/</feedburner:origLink></item><item><title>Job in saidmade: cercasi programmatore</title><link>http://feedproxy.google.com/~r/undolog/~3/fBsarAiffQI/</link><category>Eventi &amp; Iniziative</category><category>Sviluppo</category><category>ANSI-C</category><category>Lavoro</category><category>programmazione OO</category><category>Saidmade</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Tue, 30 Jun 2009 07:28:45 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=2014</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/IcK2cYgIN6qDSwxnPUJMu84xvy0/0/da"><img src="http://feedads.g.doubleclick.net/~a/IcK2cYgIN6qDSwxnPUJMu84xvy0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/IcK2cYgIN6qDSwxnPUJMu84xvy0/1/da"><img src="http://feedads.g.doubleclick.net/~a/IcK2cYgIN6qDSwxnPUJMu84xvy0/1/di" border="0" ismap="true"></img></a></p><p><a target="_blank" href="http://www.saidmade.com">Saidmade srl</a>, nonostante il momento apparentemente di crisi, offre una grande opportunità ai giovani appassionati di informatica. L'<strong>offerta di lavoro è concreta</strong>, indirizzata a tutti coloro che desiderano svolgere l'attività di sviluppatore, una professione che richiede passione e grande volontà, spesso sottovalutata soprattutto qui in Italia. La società di cui sono socio, quindi, è alla ricerca di un <strong>programmatore/programmatrice Junior</strong> con i seguenti requisiti:</p>
<ul>
<li>Età compresa fra i 18 e i 27 anni e una buona dose di creatività</li>
<li>Conoscenza di base della programmazione e soprattutto del linguaggio ANSI-C</li>
</ul>
<p>Volontà di acquisire conoscenza su:</p>
<ul>
<li>Programmazione OO</li>
<li>PHP</li>
<li>Javascript</li>
<li>Adobe Actionscript</li>
<li>C++ / Objective-C</li>
</ul>
<p>Costituisce, inoltre, <strong>titolo preferenziale</strong> la conoscenza d:</p>
<ul>
<li>XHTML / CSS</li>
<li>Wordpress</li>
</ul>
<p>Se il vostro profilo e il vostro interesse trovano riscontro in quanto detto sopra, inviate la vostra proposta di condidatura a: <a href="mailto:info@saidmade.com">info@saidmade.com</a></p>

	Tags: <a href="http://www.undolog.com/tag/ansi-c/" title="ANSI-C" rel="tag">ANSI-C</a>, <a href="http://www.undolog.com/category/eventi-iniziative/" title="Eventi &amp; Iniziative" rel="tag">Eventi &amp; Iniziative</a>, <a href="http://www.undolog.com/tag/lavoro/" title="Lavoro" rel="tag">Lavoro</a>, <a href="http://www.undolog.com/tag/programmazione-oo/" title="programmazione OO" rel="tag">programmazione OO</a>, <a href="http://www.undolog.com/tag/saidmade/" title="Saidmade" rel="tag">Saidmade</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/09/the-first-disponibile-su-itunes/" title="The First: disponibile su iTunes (9 giugno, 2009)">The First: disponibile su iTunes</a> (1)</li>
	<li><a href="http://www.undolog.com/2009/04/16/saidmadecom-20-sta-arrivando%e2%80%a6/" title="Saidmade.com 2.0: sta arrivando… (16 aprile, 2009)">Saidmade.com 2.0: sta arrivando…</a> (2)</li>
	<li><a href="http://www.undolog.com/2009/02/06/overloading/" title="Overloading (6 febbraio, 2009)">Overloading</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/01/14/how-i-did-it-il-logo-di-saidmade/" title="How I did it: il logo di Saidmade (14 gennaio, 2009)">How I did it: il logo di Saidmade</a> (5)</li>
	<li><a href="http://www.undolog.com/2009/06/12/da-actionscript-ad-objective-c/" title="Da Actionscript ad Objective-C (12 giugno, 2009)">Da Actionscript ad Objective-C</a> (1)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/fBsarAiffQI" height="1" width="1"/>]]></content:encoded><description>Saidmade srl, nonostante il momento apparentemente di crisi, offre una grande opportunità ai giovani appassionati di informatica. L'offerta di lavoro è concreta, indirizzata a tutti coloro che desiderano svolgere l'attività di sviluppatore, una professione che richiede passione e grande volontà, spesso sottovalutata soprattutto qui in Italia. La società di cui sono socio, quindi, è alla [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/30/job-in-saidmade-cercasi-programmatore/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/30/job-in-saidmade-cercasi-programmatore/</feedburner:origLink></item><item><title>Eclipse, Aptana: upload file tramite tastiera</title><link>http://feedproxy.google.com/~r/undolog/~3/gHjAjBvhY-E/</link><category>Software</category><category>Sviluppo</category><category>Tecnologia</category><category>Aptana</category><category>Eclipse</category><category>Plugin</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Tue, 30 Jun 2009 05:26:46 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1976</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/GU-MBE7qt2PMfG1R26dhoOQ3vcQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/GU-MBE7qt2PMfG1R26dhoOQ3vcQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GU-MBE7qt2PMfG1R26dhoOQ3vcQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/GU-MBE7qt2PMfG1R26dhoOQ3vcQ/1/di" border="0" ismap="true"></img></a></p><p>L'IDE <a target="_blank" href="http://www.aptana.com">Aptana</a> è disponibile anche come Plugin per <a target="_blank" href="http://www.eclipse.org">Eclipse</a>. Una delle caratteristiche più apprezzate di questo ambiente è l'ottima gestione del FTP e la sincronizzazione dei file/progetti locali con il remoto. In particolare esiste uno script che permette di inviare il codice attualmente nella finestra di editor al server remoto, tramite la combinazione dei tasti <strong>CONTROL+SHIFT+U</strong> o <strong>COMMAND+SHIFT+U</strong> su Mac OS (la stessa combinazione è usata in Adobe Dreamweaver). In alcune installazioni (ad esempio la mia su Mac OS, Eclipse e Aptana com Plugin) tale combinazione sembra assente e, se cercate di rintracciarla nelle <strong>Preferences > General > Keys</strong> non troverete - misteriosamente - nulla! Il problema, tuttavia, è facilmente risolvibile e dipende dalla sovrapposizione di un'altra impostazione. Risulta, infatti, che la combinazione dei tasti sopra citati è impostata per default su un'altra funzione: <strong>Shows Occurrences in File Quick Menu</strong>. Quindi basta aprire il <strong>pannello delle Preferences > General > Keys</strong> e cercare <strong>shows occ..</strong>:</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/eclipseprefs.png" alt="eclipseprefs" title="eclipseprefs" width="369" height="229" /></p>
<p><strong>Rimuivere</strong> il "binding", cioè l'associazione con lo shortcut da tastiera, e tutto funzionerà!</p>

	Tags: <a href="http://www.undolog.com/tag/aptana/" title="Aptana" rel="tag">Aptana</a>, <a href="http://www.undolog.com/tag/eclipse/" title="Eclipse" rel="tag">Eclipse</a>, <a href="http://www.undolog.com/tag/plugin/" title="Plugin" rel="tag">Plugin</a>, <a href="http://www.undolog.com/category/software/" title="Software" rel="tag">Software</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/category/tecnologia/" title="Tecnologia" rel="tag">Tecnologia</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2007/06/15/sviluppare-applicazioni-adobe-air-con-aptana-ide/" title="Sviluppare applicazioni Adobe AIR con Aptana IDE (15 giugno, 2007)">Sviluppare applicazioni Adobe AIR con Aptana IDE</a> (5)</li>
	<li><a href="http://www.undolog.com/2007/08/30/aptana-ide-update-milestone-9/" title="Aptana IDE update: milestone 9 (30 agosto, 2007)">Aptana IDE update: milestone 9</a> (0)</li>
	<li><a href="http://www.undolog.com/2008/11/01/wordpress-rimuovere-i-menu-dellamministrazione/" title="Wordpress: rimuovere i menu dell&#8217;amministrazione (1 novembre, 2008)">Wordpress: rimuovere i menu dell&#8217;amministrazione</a> (7)</li>
	<li><a href="http://www.undolog.com/2008/10/17/wordpress-modifcare-adminbigwidth-per-gli-sviluppatori/" title="Wordpress: modifcare AdminBigWidth per gli sviluppatori (17 ottobre, 2008)">Wordpress: modifcare AdminBigWidth per gli sviluppatori</a> (1)</li>
	<li><a href="http://www.undolog.com/2008/10/03/wordpress-come-scrivere-un-reply-to-comment-usando-jquery/" title="Wordpress: come scrivere un reply to comment usando jQuery (3 ottobre, 2008)">Wordpress: come scrivere un reply to comment usando jQuery</a> (18)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/gHjAjBvhY-E" height="1" width="1"/>]]></content:encoded><description>L'IDE Aptana è disponibile anche come Plugin per Eclipse. Una delle caratteristiche più apprezzate di questo ambiente è l'ottima gestione del FTP e la sincronizzazione dei file/progetti locali con il remoto. In particolare esiste uno script che permette di inviare il codice attualmente nella finestra di editor al server remoto, tramite la combinazione dei tasti [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/30/eclipse-aptana-upload-file-tramite-tastiera/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/30/eclipse-aptana-upload-file-tramite-tastiera/</feedburner:origLink></item><item><title>iPhone: tutti i font di sistema</title><link>http://feedproxy.google.com/~r/undolog/~3/KIvwjSjUX44/</link><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>iPhone</category><category>Apple</category><category>Font</category><category>Fonts</category><category>UIFont</category><category>XCode</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Mon, 29 Jun 2009 05:31:39 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1913</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/P5uCrKwJDJDYzph1ttzbU4oTsXM/0/da"><img src="http://feedads.g.doubleclick.net/~a/P5uCrKwJDJDYzph1ttzbU4oTsXM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/P5uCrKwJDJDYzph1ttzbU4oTsXM/1/da"><img src="http://feedads.g.doubleclick.net/~a/P5uCrKwJDJDYzph1ttzbU4oTsXM/1/di" border="0" ismap="true"></img></a></p><p>L'Apple iPhone mette a disposizione un <strong>numero limitato di Font</strong> agli sviluppatori. La lista dei font disponibili è facilmente ottenibile da codice, come vedremo. Se volete usare un vostro font, ad esempio includendolo nelle risorse, la cosa è un pochino più articolata e conivolge anche la questione delle licenze (diritti) sui font "embeddati"... ne riparleremo in seguito. Tornando invece ai font ufficiali presenti nell'Apple iPhone questi sono (cliccate sull'immagine per ingrandire):</p>
<p class="center"><a rel="shadowbox;options={handleOversize:'drag'}" href="http://www.undolog.com/wp-content/uploads/2009/06/iphonefonts.png"><img style="border:none" src="http://www.undolog.com/wp-content/uploads/2009/06/iphonefonts-150x150.png" alt="iphonefonts" title="iphonefonts" width="150" height="150" /></a></p>
<p>L'SDK di Apple iPhone permette di accedere a degli speciali font di sistema. Questi sono identificati da particolari costanti e sono:</p>
<div class="igBar"><span id="lobjc-48"><a href="#" onclick="javascript:showCodeTxt('objc-48'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-48">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIFont <span style="color: #002200;">*</span>myBoldFont &nbsp; <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIFont boldSystemFontOfSize<span style="color: #002200;">:</span>12.0<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIFont <span style="color: #002200;">*</span>mySystemFont <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIFont SystemFontOfSize<span style="color: #002200;">:</span>12.0<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIFont <span style="color: #002200;">*</span>myItalicFont <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIFont italicSystemFontOfSize<span style="color: #002200;">:</span>12.0<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Se volete invece ottenere un puntatore ad uno odei font mostrati nell'immagine di sopra basta usare:</p>
<div class="igBar"><span id="lobjc-49"><a href="#" onclick="javascript:showCodeTxt('objc-49'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-49">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIFont <span style="color: #002200;">*</span>myCustomFont <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIFont fontWithName<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Helvetica-Bold&quot;</span> size<span style="color: #002200;">:</span>22.0<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Come avrete notato la gestione del font è particolare; oltre alla famiglia (Helvetica, Courier, etc...) bisogna specificare il tipo (bold, italic, etc...). In pratica, quindi, un font deve essere fornito di queste caratteristiche. L'Helvetica, ad esempio, è presente con:</p>
<div class="igBar"><span id="lcode-50"><a href="#" onclick="javascript:showCodeTxt('code-50'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-50">
<div class="code" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Helvetica</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Helvetica-Bold</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Helvetica-Oblique</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Helvetica-BoldOblique</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Se volete visualizzare direttamente i vostri font sull'iPhone, ecco qualche linea di codice utile:</p>
<div class="igBar"><span id="lobjc-51"><a href="#" onclick="javascript:showCodeTxt('objc-51'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-51">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span style="color: #400080;">NSArray</span></a> <span style="color: #002200;">*</span>listOfFonts <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span style="color: #400080;">NSArray</span></a> alloc<span style="color: #002200;">&#93;</span> initWithArray<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>UIFont familyNames<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span style="color: #400080;">NSArray</span></a> <span style="color: #002200;">*</span>subFontTypes;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">for</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span> i<span style="color: #002200;">=</span><span style="color: #2400d9;color:#800000;">0</span>; i&lt;<span style="color: #002200;">&#91;</span>listOfFonts count<span style="color: #002200;">&#93;</span>; i<span style="color: #002200;">++</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Font Family: %@&quot;</span>, <span style="color: #002200;">&#91;</span>listOfFonts objectAtIndex<span style="color: #002200;">:</span>i<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; subFontTypes <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/"><span style="color: #400080;">NSArray</span></a> alloc<span style="color: #002200;">&#93;</span> initWithArray<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>UIFont fontNamesForFamilyName<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>listOfFonts objectAtIndex<span style="color: #002200;">:</span>i<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">for</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">int</span> j<span style="color: #002200;">=</span><span style="color: #2400d9;color:#800000;">0</span>; j&lt;<span style="color: #002200;">&#91;</span>subFontTypes count<span style="color: #002200;">&#93;</span>; j<span style="color: #002200;">++</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;+-----&gt;Type: %@&quot;</span>, <span style="color: #002200;">&#91;</span>subFontTypes objectAtIndex<span style="color: #002200;">:</span>j<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>subFontTypes release<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>listOfFonts release<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Con le <strong>SDK 2.2.1</strong>, sul mio simulatore, ho ottenuto:</p>
<div class="igBar"><span id="lcode-52"><a href="#" onclick="javascript:showCodeTxt('code-52'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-52">
<div class="code" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Courier</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Courier</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Courier-BoldOblique</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Courier-Oblique</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Courier-Bold</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: AppleGothic</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: AppleGothic</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Arial</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: ArialMT</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Arial-BoldMT</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Arial-BoldItalicMT</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Arial-ItalicMT</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: STHeiti TC</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: STHeitiTC-Light</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: STHeitiTC-Medium</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Hiragino Kaku Gothic ProN</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: HiraKakuProN-W6</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: HiraKakuProN-W3</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Courier New</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: CourierNewPS-BoldMT</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: CourierNewPS-ItalicMT</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: CourierNewPS-BoldItalicMT</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: CourierNewPSMT</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Zapfino</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Zapfino</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Arial Unicode MS</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: ArialUnicodeMS</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: STHeiti SC</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: STHeitiSC-Medium</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: STHeitiSC-Light</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: American Typewriter</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: AmericanTypewriter</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: AmericanTypewriter-Bold</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Helvetica</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Helvetica-Oblique</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Helvetica-BoldOblique</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Helvetica</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Helvetica-Bold</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Marker Felt</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: MarkerFelt-Thin</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Helvetica Neue</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: HelveticaNeue</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: HelveticaNeue-Bold</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: DB LCD Temp</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: DBLCDTempBlack</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Verdana</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Verdana-Bold</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Verdana-BoldItalic</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Verdana</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Verdana-Italic</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Times New Roman</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: TimesNewRomanPSMT</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: TimesNewRomanPS-BoldMT</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: TimesNewRomanPS-BoldItalicMT</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: TimesNewRomanPS-ItalicMT</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Georgia</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Georgia-Bold</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Georgia</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Georgia-BoldItalic</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Georgia-Italic</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: STHeiti J</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: STHeitiJ-Medium</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: STHeitiJ-Light</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Arial Rounded MT Bold</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: ArialRoundedMTBold</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: Trebuchet MS</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: TrebuchetMS-Italic</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: TrebuchetMS</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: Trebuchet-BoldItalic</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: TrebuchetMS-Bold</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">Font Family: STHeiti K</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: STHeitiK-Medium</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+-----&gt;<span style="">Type</span>: STHeitiK-Light</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>

	Tags: <a href="http://www.undolog.com/tag/apple/" title="Apple" rel="tag">Apple</a>, <a href="http://www.undolog.com/tag/font/" title="Font" rel="tag">Font</a>, <a href="http://www.undolog.com/tag/fonts/" title="Fonts" rel="tag">Fonts</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/uifont/" title="UIFont" rel="tag">UIFont</a>, <a href="http://www.undolog.com/tag/xcode/" title="XCode" rel="tag">XCode</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/" title="iPhone FirstApp: indovina il numero &#8211; parte 1 (23 giugno, 2009)">iPhone FirstApp: indovina il numero &#8211; parte 1</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/01/hi-phone/" title="Hi phone (1 giugno, 2009)">Hi phone</a> (6)</li>
	<li><a href="http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/" title="Very short trick: fermare NSTimer (16 giugno, 2009)">Very short trick: fermare NSTimer</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/26/come-eliminare-nslog-dai-sorgenti-xcode/" title="Come eliminare NSLog() dai sorgenti XCode (26 giugno, 2009)">Come eliminare NSLog() dai sorgenti XCode</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/11/apple-iphone-sdk-30-prime-incompatibilita/" title="Apple iPhone SDK 3.0: prime incompatibilità (11 giugno, 2009)">Apple iPhone SDK 3.0: prime incompatibilità</a> (1)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/KIvwjSjUX44" height="1" width="1"/>]]></content:encoded><description>L'Apple iPhone mette a disposizione un numero limitato di Font agli sviluppatori. La lista dei font disponibili è facilmente ottenibile da codice, come vedremo. Se volete usare un vostro font, ad esempio includendolo nelle risorse, la cosa è un pochino più articolata e conivolge anche la questione delle licenze (diritti) sui font "embeddati"... ne riparleremo [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/</feedburner:origLink></item><item><title>Come eliminare NSLog() dai sorgenti XCode</title><link>http://feedproxy.google.com/~r/undolog/~3/g4uJnWe6ARs/</link><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>iPhone</category><category>#else</category><category>#if</category><category>#ifdef</category><category>#ifndef</category><category>Apple</category><category>Build</category><category>compilatore</category><category>Debug</category><category>define</category><category>NSLog()</category><category>Performance</category><category>Release</category><category>XCode</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Fri, 26 Jun 2009 03:51:26 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1891</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/M8ZL2gp5oba-KMJfqVRzBwQeKjw/0/da"><img src="http://feedads.g.doubleclick.net/~a/M8ZL2gp5oba-KMJfqVRzBwQeKjw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/M8ZL2gp5oba-KMJfqVRzBwQeKjw/1/da"><img src="http://feedads.g.doubleclick.net/~a/M8ZL2gp5oba-KMJfqVRzBwQeKjw/1/di" border="0" ismap="true"></img></a></p><p><code><a target="_blank" href="http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSLog">NSLog()</a></code> è una funzione utilissima durante le fasi iniziali di un progetto, per il testing e il <strong>debug di un'applicazione per Apple iPhone</strong> o, più in generale, in ambiente <strong>XCode</strong>. Essendo appunto una funzione, esattamente come le altre, la sua presenza si farà sentire anche quando rilasceremo (release) il nostro eseguibile. Diventa quindi necessario rimuovere, in qualche modo, tutte le righe di <code>NSLog()</code> dal nostro codice, sia perchè non più necessarie, sia perchè le chiamate a <code>NSLog()</code> potrebbero influire sulle performance della nostra applicazione, soprattutto se abbiamo inserito <code>NSLog()</code> all'interno di loop.</p>
<p>Escludiamo subito la soluzione del "cerca" ed "elimina"; perchè un domani ci potrebbero servire nuovamente. Escludiamo anche la soluzione del "cerca" e "commenta", scomoda per lo stesso motivo di prima. Fortunatamente una soluzione pulita, semplice e corretta la troviamo sfruttando le <strong>istruzioni condizionali del compilatore</strong>. Quello che faremo, in pratica, e dire al compilatore di escludere - se si verifica una determinata condizione - durante la compilazione del nostro sorgente le righe che contengono <code>NSLog()</code>.</p>
<p>Le direttive di compilazioni e le istruzioni condizionali del compilatore, sono uno strumento molto potente e diffuso. Chi proviene dallo sviluppo ANSI-C le conosce sicuramente molto bene e le avrà utilizzte in moltissime situazioni. La particolarità di queste "istruzioni" risiede nel fatto, sopra accennato, di essere viste dal compilatore e non dall'eseguibile. Questa loro caratteristica le rende utili in moltissimi casi e permette di risolvere problematiche altrimenti assai fastidiose.</p>
<p>Vediamo subito un esempio di codice che, come preannunciato, permette di "eliminare" dalla compilazione parti di codice, nel nostro caso <code>NSLog()</code>:</p>
<div class="igBar"><span id="lobjc-59"><a href="#" onclick="javascript:showCodeTxt('objc-59'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-59">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#define ACTIVE_NSLOG 1</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// se la costante ACTIVE_NSLOG è definita compila</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// il blocco di codice compreso tra #ifdef e #endif</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#ifdef ACTIVE_NSLOG</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot; ... bla bla&quot;</span> <span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#endif</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Le istruzioni condizionali del compilatore <strong>fanno parte della stessa famiglia della <code>#define</code></strong>; anch'esse, infatti, sono precedute dal carattere "cancelletto" (<code>#</code>). Nell'esempio mostrato abbiamo definito una costante <code>ACTIVE_NSLOG</code>; le successive righe di codice dicono al compilatore di "includere" la riga <code>NSLog()</code> solo se <code>ACTIVE_NSLOG</code> è definito. Se abbiamo avuto la cura, durante la stesura del nostro codice, di inserire le chiamate a <code>NSLog()</code> all'interno del blocco <code>#ifdef ... #endif</code>, basterà eliminare la definizione della costante <code>ACTIVE_NSLOG</code> per far sparire, alla prossima compilazione, tutti i nostri <code>NSLog()</code>.</p>
<h4>Una soluzione migliore e definitiva</h4>
<p>Vediamo adesso come impostare l'ambiente XCode per migliorare ancor di più ciò che abbiamo fatto sopra! Prima di tutto scegliamo un nome di costante che useremo nei nostri progetti per escludere dalla compilazione <code>NSLog()</code>. Potete scegliere il nome che più vi piace, da <code>DEBUG</code> a <code>MIO_DEBUG</code> o quello che preferite. Aprite il vostro progetto, nuovo o vecchio. Inserite tutti gli <code>NSLog()</code> all'interno del blocco (o di un blocco):</p>
<div class="igBar"><span id="lobjc-60"><a href="#" onclick="javascript:showCodeTxt('objc-60'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-60">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#ifdef MIO_DEBUG</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot; ... bla bla&quot;</span> <span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#endif</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Selezionate il file principale del vostro progetto, cliccate con il tasto destro e scegliete la voce <strong>Get Info</strong>.</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/getinfo.png" alt="getinfo" title="getinfo" width="158" height="177" /></p>
<p>Si aprira la finestra con le informazioni sul progetto:</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/userdefine1.png" alt="userdefine" title="userdefine" width="565" height="593" /></p>
<p>Selezionate la scheda <strong>Build</strong>, verificate di essere in configurazione <strong>Debug</strong> (è questa la chicca), andate nella sezione <strong>User-Defined</strong> e aggiungete, tramite il bottone in basso a sinistra, un nuovo campo chiamato <code>OTHER_CFLAGS</code>. A questo assegnamoli il valore <code>-DMIO_DEBUG=1</code>. La sintassi è <code>-D{mia define}=1</code>.</p>
<p>Questa procedura ha due vantaggi:</p>
<ol>
<li>Non dobbiamo inserire nel codice la <code>#define MIO_DEBUG 1</code>, ma lo facciamo tramite le informazioni sul progetto. Quindi, quando andremo a compilare la versione di rilascio (quella senza gli <code>NSLog()</code>) non dobbiamo ricordarci di eliminare la riga <code>#define MIO_DEBUG 1</code></li>
<li>La costante è definita in relazione alla configurazione, <strong>nel nostro caso Debug</strong>. Quindi, passando alla <strong>configurazione di rilascio (release) la costante sarà assente</strong> e le righe con <code>NSLog()</code> non verranno compilate</li>
</ol>
<h4>Conclusioni</h4>
<p>La procedura sopra descritta può essere utile in una moltidutine di altri casi che, con <code>NSLog()</code>, non hanno nulla a che fare. Le istruzioni condizionali del compilatore possono aiutarci in una vastissima gamma di contesti. Spesso sono utilizzate dai programmatori per determinare il tipo di sistema operativo, la versione, il target, la presenza di processori matematici, mantenendo uno stesso "identico" sorgente.</p>
<p>Per capirci, come esempio, possiamo utilizzre la nostra costante <code>MIO_DEBUG</code> anche per intervenire in altre zone del codice:</p>
<div class="igBar"><span id="lobjc-61"><a href="#" onclick="javascript:showCodeTxt('objc-61'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-61">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// se sono in debug vinco la partita</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// con uno score di 100 invece che di 10000 <img src='http://www.undolog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#ifdef MIO_DEBUG</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span> score <span style="color: #002200;">==</span> <span style="color: #2400d9;color:#800000;">100</span> <span style="color: #002200;">&#41;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#else</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span> score <span style="color: #002200;">==</span> <span style="color: #2400d9;color:#800000;">10000</span> <span style="color: #002200;">&#41;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#endif</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">&#91;</span>self haiVinto<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Per completare, ecco alcuni esempi e varianti:</p>
<div class="igBar"><span id="lobjc-62"><a href="#" onclick="javascript:showCodeTxt('objc-62'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-62">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// più in generale esiste la</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#if espressione</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// simile alle if tradizionali, quindi con una espressione completa</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// verifica se è definita una costante</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#ifdef costante</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// verifica se NON è definita una costante</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#ifndef costante</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// else</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#else</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// chiusura del blocco</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#endif</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="igBar"><span id="lobjc-63"><a href="#" onclick="javascript:showCodeTxt('objc-63'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-63">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// ad esempio...</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#define DEBUG 1</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#define MIA_ALTRA_COSTANTE 5</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">...</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#if DEBUG</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; <span style="color: #11740a; font-style: italic;">// compila questo</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#else</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; <span style="color: #11740a; font-style: italic;">// altrimenti compila quest'altro</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#endif</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#if MIA_ALTRA_COSTANTE&gt; 4</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;...&quot;</span><span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#endif</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="igBar"><span id="lobjc-64"><a href="#" onclick="javascript:showCodeTxt('objc-64'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-64">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#ifndef INCLUDE_MIO_FILE</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #6e371a;">#define INCLUDE_MIO_FILE</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #6e371a;">#include &quot;mio_file.h&quot;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#endif</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>

	Tags: <a href="http://www.undolog.com/tag/else/" title="#else" rel="tag">#else</a>, <a href="http://www.undolog.com/tag/if/" title="#if" rel="tag">#if</a>, <a href="http://www.undolog.com/tag/ifdef/" title="#ifdef" rel="tag">#ifdef</a>, <a href="http://www.undolog.com/tag/ifndef/" title="#ifndef" rel="tag">#ifndef</a>, <a href="http://www.undolog.com/tag/apple/" title="Apple" rel="tag">Apple</a>, <a href="http://www.undolog.com/tag/build/" title="Build" rel="tag">Build</a>, <a href="http://www.undolog.com/tag/compilatore/" title="compilatore" rel="tag">compilatore</a>, <a href="http://www.undolog.com/tag/debug/" title="Debug" rel="tag">Debug</a>, <a href="http://www.undolog.com/tag/define/" title="define" rel="tag">define</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/nslog/" title="NSLog()" rel="tag">NSLog()</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/tag/performance/" title="Performance" rel="tag">Performance</a>, <a href="http://www.undolog.com/tag/release/" title="Release" rel="tag">Release</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/xcode/" title="XCode" rel="tag">XCode</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/18/actionscript-trace-objective-c-nslog/" title="Actionscript trace, Objective-C NSLog() (18 giugno, 2009)">Actionscript trace, Objective-C NSLog()</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/" title="iPhone FirstApp: indovina il numero &#8211; parte 1 (23 giugno, 2009)">iPhone FirstApp: indovina il numero &#8211; parte 1</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/01/hi-phone/" title="Hi phone (1 giugno, 2009)">Hi phone</a> (6)</li>
	<li><a href="http://www.undolog.com/2009/06/11/apple-iphone-sdk-30-prime-incompatibilita/" title="Apple iPhone SDK 3.0: prime incompatibilità (11 giugno, 2009)">Apple iPhone SDK 3.0: prime incompatibilità</a> (1)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/g4uJnWe6ARs" height="1" width="1"/>]]></content:encoded><description>NSLog() è una funzione utilissima durante le fasi iniziali di un progetto, per il testing e il debug di un'applicazione per Apple iPhone o, più in generale, in ambiente XCode. Essendo appunto una funzione, esattamente come le altre, la sua presenza si farà sentire anche quando rilasceremo (release) il nostro eseguibile. Diventa quindi necessario rimuovere, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/26/come-eliminare-nslog-dai-sorgenti-xcode/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/26/come-eliminare-nslog-dai-sorgenti-xcode/</feedburner:origLink></item><item><title>iPhone FirstApp: indovina il numero – parte 1</title><link>http://feedproxy.google.com/~r/undolog/~3/qfbmw3OUoAs/</link><category>Generale</category><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>Tutorials</category><category>Videogames</category><category>iPhone</category><category>Apple</category><category>Google Code</category><category>IBAction</category><category>IBOutlet</category><category>integerValue</category><category>Interface Builder</category><category>NSString</category><category>UIAlertView</category><category>UIButton</category><category>UILabel</category><category>UINavigationBar</category><category>UIView</category><category>Undolibrary</category><category>ViewController</category><category>XCode</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Tue, 23 Jun 2009 14:54:06 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1815</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/GldnO97StZA436wgeGWj7oESGLQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/GldnO97StZA436wgeGWj7oESGLQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GldnO97StZA436wgeGWj7oESGLQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/GldnO97StZA436wgeGWj7oESGLQ/1/di" border="0" ismap="true"></img></a></p><p>Il primo sorgente che mi è passato tra le mani era scritto in Basic e consisteva in poche righe di codice, per me illuminanti. Era un semplice giochino che generava un numero casuale da 1 a 10 e, tramite l'input da tastiera, verificava che il numero inserito era maggione, minore o uguale al numero casuale. Nonostante la sua rozza semplicità rimane, per me, uno dei migliori esempi - semplici, divertenti e pratici - per spiegare a chi non sa nulla di programmazione cosa s'intenda effettivamente per "programma per computer". Così ho pensato di riproporlo per <strong>Apple iPhone</strong>, magari aiuterà qualcuno...</p>
<p>In questo post realizzeremo una particolare versione di "Indovina il numero" e la chiameremo FirstApp. Più avanti riscriveremo la stessa applicazione con metodi diversi, ad esempio creando manualmente un <code>UIView</code> o lasciando da parte Interface Builder.</p>
<p>L'applicazione già fatta, se volete solo scaricarla, è disponibile sul mio Google Code repository:</p>
<ul>
<li><a href="http://code.google.com/p/undolibrary/source/browse/trunk/iPhone/FirstApp/">Sfoglia sorgenti</a></li>
<li><a href="http://undolibrary.googlecode.com/files/FirstApp.zip">Sorgenti .zip (1.4Mb)</a></li>
</ul>
<h4>1 - Iniziamo</h4>
<p>Apriamo <strong>XCode</strong>, dal menu <strong>File</strong> selezioniamo <strong>New Project</strong> e scegliamo, per questa versione, di partire dal classico <strong>View-Based Application</strong> (la prossima volta partiremo da <strong>Window-Based Application</strong> ottenendo lo stesso identico risultato). Chiamate il progetto <code>FirstApp</code> e salvatelo dove più vi fa comodo.</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/xcode-newproject.png" alt="XCode New Project" title="xcode-newproject" width="600" height="442" /></p>
<p>Come noterete sto usando ancora la versione di XCode per le <strong>SDK 2.2.1</strong>, in quanto le <strong>SDK 3.0</strong> non sono ancora "molto" stabili. Tenete bene a mente quest'immagine in quanto con la nuova versione di XCode alcuni template non saranno proprio identici e alcune cose cambieranno. Tuttavia per ora non vi dovete preoccupare di questo a meno che non state già utilizzando l'ultima release di XCode.</p>
<p><img src="http://www.undolog.com/wp-content/uploads/2009/06/viewcontroller.png" alt="viewcontroller" title="viewcontroller" width="230" height="331" style="float:left;margin:5px 10px 0 0" />In questa versione <strong>useremo Interface Builder</strong> quindi, per prima cosa, andremo a disegnare la nostra interfaccia utente. Apriamo dunque la cartella <strong>Resources</strong> e fate doppio click su <strong><code>FirstAppViewController.xib</code></strong>. Questo file è proprio di Interface Builder, come il file <strong><code>MainWindow.xib</code></strong> (vedi anche l'estensione del file <em><strong>X</strong> <strong>I</strong>nterface <strong>B</strong>uilder</em>).<br/>Eventuali altri <em>controller</em> saranno posizionati sempre in questa cartella. Le restanti cartelle contengono tutti gli altri file della nostra applicazione e, in particolare, noi lavoreremo molto su quelli presenti nella cartella <strong>Classes</strong>.<br/>Tornando ad Interface Builder ci troveremmo davanti ad una schermata vuota che rappresenta la nostra <code>View</code>, il contenitore dove saranno posizionati gli oggetti <strong>UIKit</strong> della nostra interfaccia utente. Questo oggetto visivo che stiamo guardando tramite Interface Builder è collegato al file <strong><code>FirstAppViewController.m</code></strong> (e .h) presente nella cartella <strong>Classes</strong>.</p>
<p><img style="float:left;margin:5px 10px 0 0" src="http://www.undolog.com/wp-content/uploads/2009/06/library.png" alt="library" title="library" width="172" height="232"/> Nella finestra <strong>Library</strong> troviamo tutti i componenti visivi per creare interfaccie standard, piacevoli ed accessibili sul nostro Apple iPhone.<br/>Questi sono comodamente ordinati per tipologia (vedi cartelle azzurre in alto). Per inserirli nella nostra View è sufficiente selezionare il componente dalla fienstra Library e trascinarlo all'interno della nostra finestra View, dove potremmo posizionarlo, ridimensionarlo e configurarlo a nostro piacimento (tutte cose fattibili anche da codice, come vedremo prossimamente).<br/>Prima di proseguire, se è la prima volta che lavorate con Interface Builder, divertitevi un po' provando i vari componenti e, quando ne avrete abbastanza, fate in modo di ottenere qualcosa di simile all'immagine mostrata qui sotto, ovvero un titolo realizzato con il componente <code>UINavigationBar</code>, un testo introduttivo (<code>UILabel</code>), un campo testo per l'inserimento del numero da indovinare (<code>UITextField</code>) e - finalmente - un semplice bottone (<code>UIButton</code>) per verificare se abbiamo indovinato:</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/view.png" alt="view" title="view" width="224" height="351" /></p>
<p>L'impostazione dei componenti in Interface Builder avviene tramite una particolare finestra divisa sempre in quattro schede: attributes, connections, size e identity, una sorta di "ispettore" dei componenti. In base al componente selezionato la finestra Identity si configura con le appropriete caratteristiche relative al componente. Se selezioniamo la <code>UINavigationBar</code>, ad esempio, avremmo a disposizioni tutte le impostazioni possibili per questo tipo di componente.</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/ispettore.png" alt="ispettore" title="ispettore" width="229" height="300"/></p>
<h4>2 - Codice</h4>
<p>Adesso che abbiamo stabilito e posizionato i nostri componenti visivi per l'interfaccia, andiamo a scrivere un po' di codice per manipolarli. Prima di tutto apriamo il file FirstAppViewController.h e facciamolo diventare così:</p>
<div class="igBar"><span id="lobjc-69"><a href="#" onclick="javascript:showCodeTxt('objc-69'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-69">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">//</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// &nbsp;FirstAppViewController.h</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// &nbsp;FirstApp</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">//</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// &nbsp;Created by Giovambattista Fazioli on 19/06/09.</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// &nbsp;Copyright Saidmade srl 2009. All rights reserved.</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">//</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6e371a;">#import &lt;UIKit/UIKit.h&gt;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">@interface</span> FirstAppViewController <span style="color: #002200;">:</span> UIViewController <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; IBOutlet UITextField &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #002200;">*</span>numero;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; IBOutlet UIButton &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #002200;">*</span>bottone;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">int</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; numeroACaso;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">-</span><span style="color: #002200;">&#40;</span>IBAction<span style="color: #002200;">&#41;</span>controllaNumero;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">@end</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Le righe 12, 13 e 14 definiscono le "variabili" del nostro Game. Le prime due sono dei puntatori ai nostri oggetti grafici inseriti con Interface Builder: il campo testo e il bottone. <strong><code>IBOutlet</code></strong>, davati al tipo, serve a creare un link, una referenza, verso l'interfaccia <code>.xib</code> di Interface Builder. Infatti, nel caso volessimo creare i nostri componenti esclusivamenti tramite codice, senza passare per Interface Builder, basta eliminare la <strong><code>IBOutlet</code></strong>, in quanto inutile. La riga 17, invece, definisce un metodo (un messaggio-evento) che vogliamo far scattare quando si clicca il bottone. In questo file .h (header file) abbiamo eseguito solo definizioni. L'implementazione del codice vero e proprio avviene nel corrispettivo file .m: <strong><code>FirstAppViewController.m</code></strong>. Cliccando si <strong>CMD+ALT+FRECCIA SU</strong> si passa alternativamente dal file .h al file .m. Andiamo quindi ad editare <code>FirstAppViewController.m</code>. Prima di tutto eliminiamo i commento al meotdo <strong><code>viewDidLoad</code></strong> (33 esima riga circa) e facciamolo diventare:</p>
<div class="igBar"><span id="lobjc-70"><a href="#" onclick="javascript:showCodeTxt('objc-70'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-70">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>viewDidLoad <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>super viewDidLoad<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; numeroACaso <span style="color: #002200;">=</span> 1 <span style="color: #002200;">+</span> arc4random<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">%</span> <span style="color: #2400d9;color:#800000;">10</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Numero pensato %d&quot;</span>, numeroACaso<span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p><code>viewDidLoad</code> è uno dei metodo richiamati all'avvio dell'applicazione. Se volete corrisponde un po' al <code>document onload</code> di Javascript o al <code>$(document).ready()</code> di <a target="_blank" href="http://jquery.com">jQuery</a>. Le righe che ho aggiunto sono la 5 e la 6. La 5, in particolare, <strong>crea un numero casuale compreso da 1 a 10</strong>! La riga numero 6, invece, è solo per debug e stampa sulla console il numero generato. Adesso scriviamo il codice (l'impementazione) del metodo <code>controllaNumero()</code> che abbiamo definito nel file <code>FirstAppViewController.h</code>:</p>
<div class="igBar"><span id="lobjc-71"><a href="#" onclick="javascript:showCodeTxt('objc-71'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-71">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">-</span><span style="color: #002200;">&#40;</span>IBAction<span style="color: #002200;">&#41;</span>controllaNumero <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Premuto bottone di controlla numero&quot;</span><span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">int</span> numeroInserito <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>numero.text integerValue<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> &nbsp; &nbsp;<span style="color: #002200;">*</span>message;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Il numero inserito è %d&quot;</span>, numeroInserito <span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span> numeroInserito &lt;numeroACaso <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; message <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Troppo basso...&quot;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#125;</span> <span style="color: #a61390;">else</span> <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>numeroInserito&gt; numeroACaso <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; message <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Troppo alto...&quot;</span>; </div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#125;</span> &nbsp;<span style="color: #a61390;">else</span> <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>numeroInserito <span style="color: #002200;">==</span> numeroACaso <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; message <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Bravo hai indovinato&quot;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; numeroACaso <span style="color: #002200;">=</span> 1 <span style="color: #002200;">+</span> arc4random<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">%</span> <span style="color: #2400d9;color:#800000;">10</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Numero pensato %d&quot;</span>, numeroACaso<span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; UIAlertView <span style="color: #002200;">*</span>alertMessaggio <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIAlertView alloc<span style="color: #002200;">&#93;</span> initWithTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Responso&quot;</span> message<span style="color: #002200;">:</span> message delegate<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span> cancelButtonTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;OK&quot;</span> otherButtonTitles<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>alertMessaggio show<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>alertMessaggio release<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; numero.text <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;&quot;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Questo codice, l'ultimo che scriveremo prima di passare nuovamente a Interface Builder, possiamo definirlo come il cuore del sistema, o meglio del gioco. Esso, infatti, verifica se il numero inserito nel campo testo (<code>UITextField</code>) è minore, maggiore o uguale al numero "pensato" dal nostro iPhone. In base all'esito mostra un alert. La riga 2, come sempre, è solo per debug e stampa sulla console un messaggio quando clicchiamo il bottone. La riga 4, invece, è interessante; questa trasforma il contenuto testuale del nostro campo testo in un intero numerico. Questo è necessario per confrontare il numero casuale <code>numeroACaso</code> con il numero inserito dall'utente. In Objective-C, come nel C, non esistono conversioni di tipo implicite, come il altri linguaggi ad alto livello che non supportano la tipizazzione delle variabili in senso strict. In alcuni linguaggi, infatti, si possono confrontare stringhe e interi senza eseguire nessuna conversione esplicita o casting.</p>
<p>La riga 5 prepara un puntatore ad un stringa <code>message</code> che conterrà la risposta da visualizzare nell'alert. Le righe dalla 9 alla 17 controllano il numero inserito dall'utente con il numero casuale e ne traggono le dovute conseguenze. Ho inserito appositamente queste "<code>if</code>" brutali per rendere il più chiaro possibile il codice. In alternativa avremmo potuto usare:</p>
<div class="igBar"><span id="lobjc-72"><a href="#" onclick="javascript:showCodeTxt('objc-72'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-72">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">int</span> decisione <span style="color: #002200;">=</span> <span style="color: #002200;">&#40;</span> <span style="color: #002200;">&#40;</span>numeroInserito <span style="color: #002200;">-</span> numeroACaso<span style="color: #002200;">&#41;</span> &lt;0 <span style="color: #002200;">&#41;</span> ? <span style="color: #002200;">-</span>1 <span style="color: #002200;">:</span> <span style="color: #002200;">&#40;</span> <span style="color: #002200;">&#40;</span>numeroInserito <span style="color: #002200;">-</span> numeroACaso<span style="color: #002200;">&#41;</span> ? 1 <span style="color: #002200;">:</span> 0 <span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">switch</span><span style="color: #002200;">&#40;</span> decisione <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">case</span> <span style="color: #002200;">-</span><span style="color: #2400d9;color:#800000;">1</span><span style="color: #002200;">:</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; message <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Troppo basso...&quot;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">break</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">case</span> <span style="color: #2400d9;color:#800000;">1</span><span style="color: #002200;">:</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; message <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Troppo alto...&quot;</span>; </div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">break</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">case</span> <span style="color: #2400d9;color:#800000;">0</span><span style="color: #002200;">:</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; message <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Bravo hai indovinato&quot;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// ricominciamo...</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; numeroACaso <span style="color: #002200;">=</span> 1 <span style="color: #002200;">+</span> arc4random<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">%</span> <span style="color: #2400d9;color:#800000;">10</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Numero pensato %d&quot;</span>, numeroACaso<span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">break</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h4>Uniamo il code con Interface Builder</h4>
<p>Torniamo adesso su <strong>Interface Builder</strong>, cliccando sempre il file <code>FirstAppViewController.xib</code>. Quello che andremo a fare ora permetterà di linkare l'interfaccia visiva preparata con Interface Builder e il codice che abbiamo scritto, in particolare con i componenti <strong>evidenziati con <code>IBOutlet</code></strong>. I componenti che dobbiamo linkare al nostro codice sono il campo testo e il bottone, definiti nella definizione dell'interfaccia nel file <code>FirstAppViewController.h</code>. A questi gli avevamo dato il nome rispettivamente di <code>numero</code> e <code>bottone</code>. Da Interface Builder abbiamo vari modi per linkare i componenti visivi con il codice, uno dei più semplici è quello di cliccare con il tasto destro del mouse sul nostro componente visivo, ad esempio il campo testo (<code>UITextField</code>):</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/iboutlet.png" alt="iboutlet" title="iboutlet" width="317" height="338" /></p>
<p>Questa finestra, diversa per ogni componente, ci mostre tutto quello che possiamo "linkare" con il codice. In particolare a noi interessa l'ultima voce, quella nella sezione Referencing Outlets: New Referencing Outlet. Clicchiamo sul "cerchietto" posto a destra e - mantenendo premuto il tasto del mouse - trascinatelo nella finestra princiaple <strong><code>FirstAppViewController.xib</code></strong> sopra l'icona <strong>FirstAppViewController</strong> (File's Owner):</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/viewcontroller-link.jpg" alt="viewcontroller-link" title="viewcontroller-link" width="600" height="442" /></p>
<p>Rilasciando il tasto del mouse apparirà un menu con l'elenco di tutte le "variabili" (properties) <code>IBOutlet</code> e definite come <code>UITextField</code>:</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/menu-outlet.jpg" alt="menu-outlet" title="menu-outlet" width="280" height="91" /></p>
<p>Nel nostro caso selezioniamo <code>numero</code>. Ripetiamo lo stesso identico procedimento anche per il bottone, con l'aggiunta che per quest'ultimo avevamo definito anche un evento: <code>- (IBAction) controllaNumero;</code>. Alla fine otteremo:</p>
<p class="center"><img src="http://www.undolog.com/wp-content/uploads/2009/06/ibaction.png" alt="ibaction" title="ibaction" width="317" height="336"  /></p>
<h4>Conclusioni</h4>
<p>Se avete fatto tutto in modo corretto abbiamo finito! Il nostro giochino è pronto. In caso potete scaricare il <a href="http://undolibrary.googlecode.com/files/FirstApp.zip">sorgente completo qui</a>. Ovviamente questo è solo un esempio e mancano alcuni dettagli per farlo diventare una vera applicazione; dalle icone 57x57 ai controlli sul numero inserito e altri dettagli ancora. Il processo di sviluppo qui illustrato può essere variato, passando ad esempio per Interface Builder una volta sola, cioè alla fine: prima si scrive tutto il codice e poi si va su Interface Builder a linkare gli oggetti. In questo esempio siamo passati subito su Interface Builder per disegnare la bozza della nostra interfaccia, essendo l'applicativo semplice.</p>
<p>La prossima volta vedremo come realizzare il medisimo "giochino" <strong>senza usare Interface Builder</strong>.</p>

	Tags: <a href="http://www.undolog.com/tag/apple/" title="Apple" rel="tag">Apple</a>, <a href="http://www.undolog.com/category/generale/" title="Generale" rel="tag">Generale</a>, <a href="http://www.undolog.com/tag/google-code/" title="Google Code" rel="tag">Google Code</a>, <a href="http://www.undolog.com/tag/ibaction/" title="IBAction" rel="tag">IBAction</a>, <a href="http://www.undolog.com/tag/iboutlet/" title="IBOutlet" rel="tag">IBOutlet</a>, <a href="http://www.undolog.com/tag/integervalue/" title="integerValue" rel="tag">integerValue</a>, <a href="http://www.undolog.com/tag/interface-builder/" title="Interface Builder" rel="tag">Interface Builder</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/nsstring/" title="NSString" rel="tag">NSString</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/category/tutorials/" title="Tutorials" rel="tag">Tutorials</a>, <a href="http://www.undolog.com/tag/tutorials/" title="Tutorials" rel="tag">Tutorials</a>, <a href="http://www.undolog.com/tag/uialertview/" title="UIAlertView" rel="tag">UIAlertView</a>, <a href="http://www.undolog.com/tag/uibutton/" title="UIButton" rel="tag">UIButton</a>, <a href="http://www.undolog.com/tag/uilabel/" title="UILabel" rel="tag">UILabel</a>, <a href="http://www.undolog.com/tag/uinavigationbar/" title="UINavigationBar" rel="tag">UINavigationBar</a>, <a href="http://www.undolog.com/tag/uiview/" title="UIView" rel="tag">UIView</a>, <a href="http://www.undolog.com/tag/undolibrary/" title="Undolibrary" rel="tag">Undolibrary</a>, <a href="http://www.undolog.com/category/videogames/" title="Videogames" rel="tag">Videogames</a>, <a href="http://www.undolog.com/tag/viewcontroller/" title="ViewController" rel="tag">ViewController</a>, <a href="http://www.undolog.com/tag/xcode/" title="XCode" rel="tag">XCode</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/01/hi-phone/" title="Hi phone (1 giugno, 2009)">Hi phone</a> (6)</li>
	<li><a href="http://www.undolog.com/2009/06/23/objective-c-conversione-dei-tipi/" title="Objective-C: conversione dei tipi (23 giugno, 2009)">Objective-C: conversione dei tipi</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/11/apple-iphone-sdk-30-prime-incompatibilita/" title="Apple iPhone SDK 3.0: prime incompatibilità (11 giugno, 2009)">Apple iPhone SDK 3.0: prime incompatibilità</a> (1)</li>
	<li><a href="http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/" title="Very short trick: fermare NSTimer (16 giugno, 2009)">Very short trick: fermare NSTimer</a> (0)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/qfbmw3OUoAs" height="1" width="1"/>]]></content:encoded><description>Il primo sorgente che mi è passato tra le mani era scritto in Basic e consisteva in poche righe di codice, per me illuminanti. Era un semplice giochino che generava un numero casuale da 1 a 10 e, tramite l'input da tastiera, verificava che il numero inserito era maggione, minore o uguale al numero casuale. [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/</feedburner:origLink></item><item><title>Objective-C: conversione dei tipi</title><link>http://feedproxy.google.com/~r/undolog/~3/mA-ob6YIfmc/</link><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>iPhone</category><category>Apple</category><category>casting</category><category>integerValue</category><category>NSString</category><category>parseInt()</category><category>typecasting</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Mon, 22 Jun 2009 16:15:52 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1862</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/TQ_w82ggZ5YUMYK94e9WT5ZmIEU/0/da"><img src="http://feedads.g.doubleclick.net/~a/TQ_w82ggZ5YUMYK94e9WT5ZmIEU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/TQ_w82ggZ5YUMYK94e9WT5ZmIEU/1/da"><img src="http://feedads.g.doubleclick.net/~a/TQ_w82ggZ5YUMYK94e9WT5ZmIEU/1/di" border="0" ismap="true"></img></a></p><p>Con alcuni linguaggi ad alto livello, come Javascript o PHP, dove i dati non sono tipizzati o comunque possono non esserlo, siamo "viziati" nel confrontare o trasformare interi e stringhe e vice versa, il tutto nascosto o manipolato dall'interprete (o compilatore). Ad esempio in Javascript esistono funzioni di "forzatura" (come <code>parseInt()</code> ad esempio) necessarie in particolari casi. Tuttavia in altre circostanze trattiamo gli interi senza preoccuparci di particolari conversioni (esplicite), come ad esempio:</p>
<div class="igBar"><span id="ljavascript-76"><a href="#" onclick="javascript:showCodeTxt('javascript-76'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-76">
<div class="javascript" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #003366; font-weight: bold;">var</span> mioNumero <span style="color: #339933;">=</span> <span style="color: #CC0000;color:#800000;">5</span><span style="color: #339933;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #006600; font-style: italic;">// ...</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;Il valore di mioNumero è &quot;</span> <span style="color: #339933;">+</span> mioNumero <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>In Objective-C, invece, il tipo dato è importante e la conversione di tipo dev'essere esplicita. Oltra al <a target="_blank" href="http://it.wikipedia.org/wiki/Conversione_di_tipo">casting</a> (meglio typecasting) ci possiamo avvalere di funzioni e funzionalità specifiche per la conversione di tipo. Ad esempio ecco come convertire un intero in stringa:</p>
<div class="igBar"><span id="lobjc-77"><a href="#" onclick="javascript:showCodeTxt('objc-77'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-77">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">int</span> mioNumero <span style="color: #002200;">=</span> <span style="color: #2400d9;color:#800000;">5</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> <span style="color: #002200;">*</span>miaStringa <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> stringWithFormat<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;%d&quot;</span>, mioNumero<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">//</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;miaStringa=%@ mioNumero=%i&quot;</span>, miaStringa, mioNumero<span style="color: #002200;">&#41;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Al contrario, ecco come convertire una stringa in intero:</p>
<div class="igBar"><span id="lobjc-78"><a href="#" onclick="javascript:showCodeTxt('objc-78'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-78">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> <span style="color: #002200;">*</span>miaStringa <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;128&quot;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">int</span> mioNumero <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>miaStringa integerValue<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">//</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;miaStringa=%@ mioNumero=%i&quot;</span>, miaStringa, mioNumero<span style="color: #002200;">&#41;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>

	Tags: <a href="http://www.undolog.com/tag/apple/" title="Apple" rel="tag">Apple</a>, <a href="http://www.undolog.com/tag/casting/" title="casting" rel="tag">casting</a>, <a href="http://www.undolog.com/tag/integervalue/" title="integerValue" rel="tag">integerValue</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/nsstring/" title="NSString" rel="tag">NSString</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/tag/parseint/" title="parseInt()" rel="tag">parseInt()</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/typecasting/" title="typecasting" rel="tag">typecasting</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/" title="iPhone FirstApp: indovina il numero &#8211; parte 1 (23 giugno, 2009)">iPhone FirstApp: indovina il numero &#8211; parte 1</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/" title="Very short trick: fermare NSTimer (16 giugno, 2009)">Very short trick: fermare NSTimer</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/19/iphone-code-snippet-uialertview/" title="iPhone code snippet: UIAlertView (19 giugno, 2009)">iPhone code snippet: UIAlertView</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/01/hi-phone/" title="Hi phone (1 giugno, 2009)">Hi phone</a> (6)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/mA-ob6YIfmc" height="1" width="1"/>]]></content:encoded><description>Con alcuni linguaggi ad alto livello, come Javascript o PHP, dove i dati non sono tipizzati o comunque possono non esserlo, siamo "viziati" nel confrontare o trasformare interi e stringhe e vice versa, il tutto nascosto o manipolato dall'interprete (o compilatore). Ad esempio in Javascript esistono funzioni di "forzatura" (come parseInt() ad esempio) necessarie in [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/23/objective-c-conversione-dei-tipi/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/23/objective-c-conversione-dei-tipi/</feedburner:origLink></item><item><title>iPhone code snippet: UIAlertView</title><link>http://feedproxy.google.com/~r/undolog/~3/MVFd0Lc_LZ0/</link><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>iPhone</category><category>Alert</category><category>Apple</category><category>modal</category><category>UIAlertView</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Fri, 19 Jun 2009 05:30:34 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1778</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/RGmqAncs5az544pk837m5bOThSs/0/da"><img src="http://feedads.g.doubleclick.net/~a/RGmqAncs5az544pk837m5bOThSs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/RGmqAncs5az544pk837m5bOThSs/1/da"><img src="http://feedads.g.doubleclick.net/~a/RGmqAncs5az544pk837m5bOThSs/1/di" border="0" ismap="true"></img></a></p><p>La classe <code>UIAletrView</code> permette di mostrare una finestra modale (animata) per informare e/o chiedere qualcosa all'utente. Le <code>UIAlterView</code> (viste alert) sono molto comode e semplici da usare. Anche la gestione della risposta utente viene risolta intercettando l'indice del bottone premuto. Per visualizzare un semplice <code>UIAlterView</code> basta scrivere:</p>
<div class="igBar"><span id="lobjc-83"><a href="#" onclick="javascript:showCodeTxt('objc-83'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-83">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// semplice Alert con un bottone, senza callback</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIAlertView <span style="color: #002200;">*</span>myAlter <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIAlertView alloc<span style="color: #002200;">&#93;</span> initWithTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Titolo&quot;</span> message<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Messaggio&quot;</span> cancelButtonTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Annulla&quot;</span> otherButtonTitles<span style="color: #002200;">:</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlter show<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlter release<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>E' possibile aggiungere ulteriori bottoni in <code>otherButtonTitles</code>:</p>
<div class="igBar"><span id="lobjc-84"><a href="#" onclick="javascript:showCodeTxt('objc-84'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-84">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// semplice Alert con due bottoni, senza callback</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIAlertView <span style="color: #002200;">*</span>myAlter <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIAlertView alloc<span style="color: #002200;">&#93;</span> initWithTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Titolo&quot;</span> message<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Messaggio&quot;</span> cancelButtonTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Annulla&quot;</span> otherButtonTitles<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Ok&quot;</span>, <span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlter show<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlter release<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Per determinare quale bottone è stato premuto, basta aggiungere la <code>delegate:self</code> nell'inizializzazione  dell'oggetto <code>UIAlterView</code>:</p>
<div class="igBar"><span id="lobjc-85"><a href="#" onclick="javascript:showCodeTxt('objc-85'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-85">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// semplice Alert con due bottoni e callback</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIAlertView <span style="color: #002200;">*</span>myAlter <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIAlertView alloc<span style="color: #002200;">&#93;</span> initWithTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Titolo&quot;</span> message<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Messaggio&quot;</span> delegate<span style="color: #002200;">:</span>self cancelButtonTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Annulla&quot;</span> otherButtonTitles<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Ok&quot;</span>, <span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlter show<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlter release<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// la callback ha questa sintassi</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>alertView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIAlertView <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>alertView clickedButtonAtIndex<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>NSInteger<span style="color: #002200;">&#41;</span>buttonIndex <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">switch</span> <span style="color: #002200;">&#40;</span> buttonIndex <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">case</span> <span style="color: #2400d9;color:#800000;">1</span><span style="color: #002200;">:</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// codice</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #a61390;">break</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>La callback <code>alertView</code> deve avere necessariamente quel nome; per maggiori informazioni vedi <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIAlertViewDelegate_Protocol/UIAlertViewDelegate/UIAlertViewDelegate.html">UIAlertViewDelegate</a></p>
<p>Avendo a disposizione solo la callbck <code>alertView:clickedButtonAtIndex</code>, più <code>UIAletrView</code> punteranno sempre a quella. Utilizzando il campo tag dell'oggetto <code>UIAletrView</code>, possiamo determinare quale sia il "chiamante":</p>
<div class="igBar"><span id="lobjc-86"><a href="#" onclick="javascript:showCodeTxt('objc-86'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-86">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// semplice Alert con due bottoni e callback</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIAlertView <span style="color: #002200;">*</span>myAlterA <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIAlertView alloc<span style="color: #002200;">&#93;</span> initWithTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Titolo&quot;</span> message<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Messaggio&quot;</span> delegate<span style="color: #002200;">:</span>self cancelButtonTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Annulla&quot;</span> otherButtonTitles<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Ok&quot;</span>, <span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">myAlterA.tag <span style="color: #002200;">=</span> <span style="color: #2400d9;color:#800000;">1</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlterA show<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlterA release<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">//</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIAlertView <span style="color: #002200;">*</span>myAlterB <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIAlertView alloc<span style="color: #002200;">&#93;</span> initWithTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Titolo&quot;</span> message<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Messaggio&quot;</span> delegate<span style="color: #002200;">:</span>self cancelButtonTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Annulla&quot;</span> otherButtonTitles<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Ok&quot;</span>, <span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">myAlterA.tag <span style="color: #002200;">=</span> <span style="color: #2400d9;color:#800000;">2</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlterB show<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlterB release<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// gestione multipla UIAlertView</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>alertView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIAlertView <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>alertView clickedButtonAtIndex<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>NSInteger<span style="color: #002200;">&#41;</span>buttonIndex <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Alert Tag: %i&quot;</span>, alertView.tag<span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;buttonIndex: %i&quot;</span>, buttonIndex<span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>

	Tags: <a href="http://www.undolog.com/tag/alert/" title="Alert" rel="tag">Alert</a>, <a href="http://www.undolog.com/tag/apple/" title="Apple" rel="tag">Apple</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/modal/" title="modal" rel="tag">modal</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/uialertview/" title="UIAlertView" rel="tag">UIAlertView</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/" title="iPhone FirstApp: indovina il numero &#8211; parte 1 (23 giugno, 2009)">iPhone FirstApp: indovina il numero &#8211; parte 1</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/" title="Very short trick: fermare NSTimer (16 giugno, 2009)">Very short trick: fermare NSTimer</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/23/objective-c-conversione-dei-tipi/" title="Objective-C: conversione dei tipi (23 giugno, 2009)">Objective-C: conversione dei tipi</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/05/iphone-lutilissima-proprieta-tag/" title="iPhone: l&#8217;utilissima proprietà tag (5 giugno, 2009)">iPhone: l&#8217;utilissima proprietà tag</a> (2)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/MVFd0Lc_LZ0" height="1" width="1"/>]]></content:encoded><description>La classe UIAletrView permette di mostrare una finestra modale (animata) per informare e/o chiedere qualcosa all'utente. Le UIAlterView (viste alert) sono molto comode e semplici da usare. Anche la gestione della risposta utente viene risolta intercettando l'indice del bottone premuto. Per visualizzare un semplice UIAlterView basta scrivere:
PLAIN TEXT
Objective-C:




// semplice Alert con un bottone, senza callback


UIAlertView [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/19/iphone-code-snippet-uialertview/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/19/iphone-code-snippet-uialertview/</feedburner:origLink></item><item><title>iPhone Objective-C: equivalenza nella sintassi</title><link>http://feedproxy.google.com/~r/undolog/~3/X_tz4XEJ4Xk/</link><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>iPhone</category><category>Codice</category><category>UIAlertView</category><category>XCode</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Thu, 18 Jun 2009 22:00:50 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1801</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/0nMQ3JqFKPrGme65IeT3xf_X3zQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/0nMQ3JqFKPrGme65IeT3xf_X3zQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0nMQ3JqFKPrGme65IeT3xf_X3zQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/0nMQ3JqFKPrGme65IeT3xf_X3zQ/1/di" border="0" ismap="true"></img></a></p><p>La sintassi con le parentesi quadre in Objective-C è uno dei motivi di maggior frustazioni per chi proviene da altri linguaggi (ad oggetti). Tuttavia, fatta l'abitudine, ci si rende conto di quanto il codice diventi ugualmente leggibile con questa il mix della sintassi classica e quella più spiccatamente Smalltalk. Ad esempio vediamo come la stessa procedura può essere scritta in entrambe le sintassi. Prendiamo l'inizializzazione di un <code>UIAlertView</code>:</p>
<div class="igBar"><span id="lobjc-90"><a href="#" onclick="javascript:showCodeTxt('objc-90'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-90">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIAlertView <span style="color: #002200;">*</span>myAlert <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIAlertView alloc<span style="color: #002200;">&#93;</span> initWithTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Titolo&quot;</span> </div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; message<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Messaggio&quot;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; delegate<span style="color: #002200;">:</span>self</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cancelButtonTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Annulla&quot;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; otherButtonTitles<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Ok&quot;</span>,<span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">myAlert.tag <span style="color: #002200;">=</span> <span style="color: #2400d9;color:#800000;">1</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlert show<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlert release<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>L'impostazione del tag potavamo farla anche così:</p>
<div class="igBar"><span id="lobjc-91"><a href="#" onclick="javascript:showCodeTxt('objc-91'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-91">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIAlertView <span style="color: #002200;">*</span>myAlert <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIAlertView alloc<span style="color: #002200;">&#93;</span> initWithTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Titolo&quot;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; message<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Messaggio&quot;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; delegate<span style="color: #002200;">:</span>self</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cancelButtonTitle<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Annulla&quot;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; otherButtonTitles<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Ok&quot;</span>,<span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlert setTag<span style="color: #002200;">:</span>1<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlert show<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myAlert release<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Stessa cosa in lettura durante l'evento:</p>
<div class="igBar"><span id="lobjc-92"><a href="#" onclick="javascript:showCodeTxt('objc-92'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-92">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>alertView<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIAlertView <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>alertView clickedButtonAtIndex<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>NSInteger<span style="color: #002200;">&#41;</span>buttonIndex <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span> alertView.tag <span style="color: #002200;">==</span> <span style="color: #2400d9;color:#800000;">1</span> <span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span> <span style="color: #11740a; font-style: italic;">// ...</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// oppure</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span><span style="color: #002200;">&#91;</span>alertView tag<span style="color: #002200;">&#93;</span> <span style="color: #002200;">==</span> <span style="color: #2400d9;color:#800000;">1</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span> <span style="color: #11740a; font-style: italic;">// ...</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<blockquote><p><strong>Nota bene</strong>: non tutte le proprietà o metodi hanno questa duplice sintassi. Nel caso dell'<code>UIAlertView</code> abbiamo questa doppia funzionalità. Per altri oggetti o in altri casi, invece, potrebbero funzionare una sola delle due... ma non chiedetevi perchè (dipende da come gli sviluppatori hanno definito l'interfaccia).</p>
</blockquote>

	Tags: <a href="http://www.undolog.com/tag/codice/" title="Codice" rel="tag">Codice</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/uialertview/" title="UIAlertView" rel="tag">UIAlertView</a>, <a href="http://www.undolog.com/tag/xcode/" title="XCode" rel="tag">XCode</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/" title="iPhone FirstApp: indovina il numero &#8211; parte 1 (23 giugno, 2009)">iPhone FirstApp: indovina il numero &#8211; parte 1</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/05/iphone-lutilissima-proprieta-tag/" title="iPhone: l&#8217;utilissima proprietà tag (5 giugno, 2009)">iPhone: l&#8217;utilissima proprietà tag</a> (2)</li>
	<li><a href="http://www.undolog.com/2009/06/19/iphone-code-snippet-uialertview/" title="iPhone code snippet: UIAlertView (19 giugno, 2009)">iPhone code snippet: UIAlertView</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/01/hi-phone/" title="Hi phone (1 giugno, 2009)">Hi phone</a> (6)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/X_tz4XEJ4Xk" height="1" width="1"/>]]></content:encoded><description>La sintassi con le parentesi quadre in Objective-C è uno dei motivi di maggior frustazioni per chi proviene da altri linguaggi (ad oggetti). Tuttavia, fatta l'abitudine, ci si rende conto di quanto il codice diventi ugualmente leggibile con questa il mix della sintassi classica e quella più spiccatamente Smalltalk. Ad esempio vediamo come la stessa [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/19/iphone-objective-c-equivalenza-nella-sintassi/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/19/iphone-objective-c-equivalenza-nella-sintassi/</feedburner:origLink></item><item><title>Actionscript trace, Objective-C NSLog()</title><link>http://feedproxy.google.com/~r/undolog/~3/5A_hRSe-bLs/</link><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>iPhone</category><category>Bug</category><category>console</category><category>Debug</category><category>Flash</category><category>NSLog()</category><category>NSLogv()</category><category>trace()</category><category>XCode</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Thu, 18 Jun 2009 06:06:01 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1790</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/NyZ782XNMwzJUFBcSiF6Yox0e9Y/0/da"><img src="http://feedads.g.doubleclick.net/~a/NyZ782XNMwzJUFBcSiF6Yox0e9Y/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/NyZ782XNMwzJUFBcSiF6Yox0e9Y/1/da"><img src="http://feedads.g.doubleclick.net/~a/NyZ782XNMwzJUFBcSiF6Yox0e9Y/1/di" border="0" ismap="true"></img></a></p><p>Riprendendo il post <a href="http://www.undolog.com/2009/06/12/da-actionscript-ad-objective-c/"><em>Da Actionscript ad Objective-C</em></a> (dove si mettevano a confronto il codice e la sintassi Actionscript e Objective-C), in Actionscript abbiamo la comodissima funzione <code>trace()</code>, usata per il debug delle applicazioni. Questa funzione emette un output sulla console dell'ambiente di sviluppo Adobe Flash. Viene utilizzata principalmente nelle fasi di sviluppo e testing di "filmato"/applicativo. In XCode/Objective-C abbiamo: <code>NSLog()</code>. La sintassi di questa funzione è molto simile alla <code>trace()</code> di Actionscript:</p>
<div class="igBar"><span id="lobjc-97"><a href="#" onclick="javascript:showCodeTxt('objc-97'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-97">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">NSLog<span style="color: #002200;">&#40;</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Sono una linea di debug&quot;</span> <span style="color: #002200;">&#41;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>In Actionscript avremmo:</p>
<div class="igBar"><span id="lactionscript3-98"><a href="#" onclick="javascript:showCodeTxt('actionscript3-98'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript3-98">
<div class="actionscript3" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span> <span style="color: #990000;">&quot;Sono una linea di debug&quot;</span> <span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>A parte l'uso della chiocciola (@), come potete vedere, sono identiche. Le differenze (e similitudini) iniziano quando si vogliano visualizzare valori di variabili; ad esempio in Actionscript potremmo avere:</p>
<div class="igBar"><span id="lactionscript3-99"><a href="#" onclick="javascript:showCodeTxt('actionscript3-99'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript3-99">
<div class="actionscript3" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span> <span style="color: #990000;">&quot;Coordinata x:&quot;</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #004993;">x</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #990000;">&quot; coordinata y:&quot;</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900; font-style: italic;">// oppure</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span> <span style="color: #990000;">&quot;Coordinate: &quot;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">x</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">y</span> <span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>In Objective-C abbiamo:</p>
<div class="igBar"><span id="lobjc-100"><a href="#" onclick="javascript:showCodeTxt('objc-100'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-100">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">NSLog<span style="color: #002200;">&#40;</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Coordinata x:%i coordinata y:%i&quot;</span>, x, y <span style="color: #002200;">&#41;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<blockquote><p>Nota: <code>NSLog()</code> in realtà richiama la più generica funzione <a target="_blank" href="http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSLogv"><code>NSLogv()</code></a> che opera sull'Apple System Log. Le funzioni sono di fatto identica, cambiano solo i parametri in ingresso.</p>
</blockquote>
<p>Gli sviluppatori C troveranno molto familiare la formattazione delle stringhe, come accade per <code>printf()</code> o <code>sprintf()</code>. Per dettagli si veda <a href="http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265">String Format Specifiers</a>.</p>

	Tags: <a href="http://www.undolog.com/tag/bug/" title="Bug" rel="tag">Bug</a>, <a href="http://www.undolog.com/tag/console/" title="console" rel="tag">console</a>, <a href="http://www.undolog.com/tag/debug/" title="Debug" rel="tag">Debug</a>, <a href="http://www.undolog.com/tag/flash/" title="Flash" rel="tag">Flash</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/nslog/" title="NSLog()" rel="tag">NSLog()</a>, <a href="http://www.undolog.com/tag/nslogv/" title="NSLogv()" rel="tag">NSLogv()</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/trace/" title="trace()" rel="tag">trace()</a>, <a href="http://www.undolog.com/tag/xcode/" title="XCode" rel="tag">XCode</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/26/come-eliminare-nslog-dai-sorgenti-xcode/" title="Come eliminare NSLog() dai sorgenti XCode (26 giugno, 2009)">Come eliminare NSLog() dai sorgenti XCode</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/" title="iPhone FirstApp: indovina il numero &#8211; parte 1 (23 giugno, 2009)">iPhone FirstApp: indovina il numero &#8211; parte 1</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/01/hi-phone/" title="Hi phone (1 giugno, 2009)">Hi phone</a> (6)</li>
	<li><a href="http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/" title="Very short trick: fermare NSTimer (16 giugno, 2009)">Very short trick: fermare NSTimer</a> (0)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/5A_hRSe-bLs" height="1" width="1"/>]]></content:encoded><description>Riprendendo il post Da Actionscript ad Objective-C (dove si mettevano a confronto il codice e la sintassi Actionscript e Objective-C), in Actionscript abbiamo la comodissima funzione trace(), usata per il debug delle applicazioni. Questa funzione emette un output sulla console dell'ambiente di sviluppo Adobe Flash. Viene utilizzata principalmente nelle fasi di sviluppo e testing di [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/18/actionscript-trace-objective-c-nslog/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/18/actionscript-trace-objective-c-nslog/</feedburner:origLink></item><item><title>Very short trick: fermare NSTimer</title><link>http://feedproxy.google.com/~r/undolog/~3/7evU0zrGGH8/</link><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>iPhone</category><category>Apple</category><category>invalidate</category><category>NSTimer</category><category>trick</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Tue, 16 Jun 2009 15:49:14 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1769</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/K1ul_IZDQQEDKWU6Ux59D881vho/0/da"><img src="http://feedads.g.doubleclick.net/~a/K1ul_IZDQQEDKWU6Ux59D881vho/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/K1ul_IZDQQEDKWU6Ux59D881vho/1/da"><img src="http://feedads.g.doubleclick.net/~a/K1ul_IZDQQEDKWU6Ux59D881vho/1/di" border="0" ismap="true"></img></a></p><p>L'uso dei <em>timers</em> (<code>NSTimer</code>) nello <strong>sviluppo di applicazioni per Apple iPhone</strong> è molto frequente e non solo nella realizzazione di giochi. Uno dei problemi con cui ci si può scontrare è l'asincronicità del timer stesso, che può portare, durante l'arresto di uno o più timer, al crash della nostra applicazione. Quando si vuole fermare uno o più timer, nei casi in cui <code>repeats</code> è impostato a <code>YES</code>, si invoca la <code>invalidate</code> che, appunto, arresta il timer. Ad esempio il codice qui sotto attiva un timer che richiama il metodo <code>myTimerMethod</code> ogni 5 secondi:</p>
<div class="igBar"><span id="lobjc-105"><a href="#" onclick="javascript:showCodeTxt('objc-105'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-105">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">//</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// myTimer è definita come globale</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">//</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">myTimer <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/"><span style="color: #400080;">NSTimer</span></a> scheduledTimerWithTimeInterval<span style="color: #002200;">:</span> 5.0</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;target<span style="color: #002200;">:</span>self</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;selector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>myTimerMethod<span style="color: #002200;">&#41;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;userInfo<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;repeats<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">//</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> myTimerMethod <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// do ...</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Se volessimo bloccare il timer avremmo:</p>
<div class="igBar"><span id="lobjc-106"><a href="#" onclick="javascript:showCodeTxt('objc-106'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-106">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myTimer invalidate<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Tuttavia "invalidando" il timer rendiamo "pericolosa" anche la variabile - globale - <code>myTimer</code>. Così il metodo migliore - e sicuro - per arrestare un timer potrebbe essere:</p>
<div class="igBar"><span id="lobjc-107"><a href="#" onclick="javascript:showCodeTxt('objc-107'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-107">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span> myTimer <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>myTimer invalidate<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; myTimer <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Questo procedimento può risultare utile anche per reimpostare un timer (globale):</p>
<div class="igBar"><span id="lobjc-108"><a href="#" onclick="javascript:showCodeTxt('objc-108'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-108">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span> myTimer <span style="color: #002200;">!=</span> <span style="color: #a61390;">nil</span><span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #002200;">&#91;</span>myTimer invalidate<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; myTimer <span style="color: #002200;">=</span> <span style="color: #a61390;">nil</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// reimposto il timer a 25 secondi</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; myTimer <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/"><span style="color: #400080;">NSTimer</span></a> scheduledTimerWithTimeInterval<span style="color: #002200;">:</span> 25.0</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;target<span style="color: #002200;">:</span>self</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;selector<span style="color: #002200;">:</span><span style="color: #a61390;">@selector</span><span style="color: #002200;">&#40;</span>myTimerMethod<span style="color: #002200;">&#41;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;userInfo<span style="color: #002200;">:</span><span style="color: #a61390;">nil</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;repeats<span style="color: #002200;">:</span><span style="color: #a61390;">YES</span><span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>

	Tags: <a href="http://www.undolog.com/tag/apple/" title="Apple" rel="tag">Apple</a>, <a href="http://www.undolog.com/tag/invalidate/" title="invalidate" rel="tag">invalidate</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/nstimer/" title="NSTimer" rel="tag">NSTimer</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/trick/" title="trick" rel="tag">trick</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/" title="iPhone FirstApp: indovina il numero &#8211; parte 1 (23 giugno, 2009)">iPhone FirstApp: indovina il numero &#8211; parte 1</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/01/hi-phone/" title="Hi phone (1 giugno, 2009)">Hi phone</a> (6)</li>
	<li><a href="http://www.undolog.com/2009/06/23/objective-c-conversione-dei-tipi/" title="Objective-C: conversione dei tipi (23 giugno, 2009)">Objective-C: conversione dei tipi</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/19/iphone-code-snippet-uialertview/" title="iPhone code snippet: UIAlertView (19 giugno, 2009)">iPhone code snippet: UIAlertView</a> (0)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/7evU0zrGGH8" height="1" width="1"/>]]></content:encoded><description>L'uso dei timers (NSTimer) nello sviluppo di applicazioni per Apple iPhone è molto frequente e non solo nella realizzazione di giochi. Uno dei problemi con cui ci si può scontrare è l'asincronicità del timer stesso, che può portare, durante l'arresto di uno o più timer, al crash della nostra applicazione. Quando si vuole fermare uno [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/</feedburner:origLink></item><item><title>Miglior Blog Tecnico Italiano 2008-2009: proclamato il vincitore</title><link>http://feedproxy.google.com/~r/undolog/~3/YssFaTBvqHw/</link><category>Eventi &amp; Iniziative</category><category>Featured</category><category>Internet</category><category>Tecnologia</category><category>blog</category><category>cristiano fino</category><category>Miglior Blog Tecnico</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Mon, 15 Jun 2009 01:40:30 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1760</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/FZc6NiX_Tgh0RgMW6uKSQwAY2Dw/0/da"><img src="http://feedads.g.doubleclick.net/~a/FZc6NiX_Tgh0RgMW6uKSQwAY2Dw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/FZc6NiX_Tgh0RgMW6uKSQwAY2Dw/1/da"><img src="http://feedads.g.doubleclick.net/~a/FZc6NiX_Tgh0RgMW6uKSQwAY2Dw/1/di" border="0" ismap="true"></img></a></p><p>Si sono chiuse le votazione per il <a target="_blank" href="http://www.migliorblogtecnico.net/">Miglior Blog Tecnico Italiano 2008-2009</a>, iniziativa ideata da <a target="_blank" href="http://www.cristianofino.net/">Cristiano Fino</a>, progetto al momento unico nel panorama della blogosfera italiana. Come avrete modo di leggere - <a target="_blank" href="http://www.migliorblogtecnico.net/2009/06/la-proclamazione-dei-vincitori-della-prima-edizione-di-miglior-blog-tecnico/">nei dettagli</a> - questa prima edizione si è svolta non senza qualche incoveniente di percorso, ma alla fine siamo riusciti a portare a termine l'impegno preso. Come spesso accade la "prima volta" porta con se alcuni impensabili - o non pensati - problemi che, tuttavia, sono stati risolti strada facendo. Un grazie a tutti i partecipanti, alla giuria e alla pazienza di Cristiano e, non ultimo, al vincitore... <img src='http://www.undolog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

	Tags: <a href="http://www.undolog.com/tag/blog/" title="blog" rel="tag">blog</a>, <a href="http://www.undolog.com/tag/cristiano-fino/" title="cristiano fino" rel="tag">cristiano fino</a>, <a href="http://www.undolog.com/category/eventi-iniziative/" title="Eventi &amp; Iniziative" rel="tag">Eventi &amp; Iniziative</a>, <a href="http://www.undolog.com/category/featured/" title="Featured" rel="tag">Featured</a>, <a href="http://www.undolog.com/category/sviluppo/internet/" title="Internet" rel="tag">Internet</a>, <a href="http://www.undolog.com/tag/miglior-blog-tecnico/" title="Miglior Blog Tecnico" rel="tag">Miglior Blog Tecnico</a>, <a href="http://www.undolog.com/category/tecnologia/" title="Tecnologia" rel="tag">Tecnologia</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2008/11/27/miglior-blog-tecnico-italiano-edizione-2008-2009/" title="Miglior Blog Tecnico Italiano: edizione 2008-2009 (27 novembre, 2008)">Miglior Blog Tecnico Italiano: edizione 2008-2009</a> (9)</li>
	<li><a href="http://www.undolog.com/2007/03/13/xopus-editor-xml-in-wysiwyg/" title="Xopus: editor XML in WYSIWYG (13 marzo, 2007)">Xopus: editor XML in WYSIWYG</a> (1)</li>
	<li><a href="http://www.undolog.com/2008/10/27/wordpress-scrivere-un-logout-personale/" title="Wordpress: scrivere un logout personale (27 ottobre, 2008)">Wordpress: scrivere un logout personale</a> (1)</li>
	<li><a href="http://www.undolog.com/2008/11/01/wordpress-rimuovere-i-menu-dellamministrazione/" title="Wordpress: rimuovere i menu dell&#8217;amministrazione (1 novembre, 2008)">Wordpress: rimuovere i menu dell&#8217;amministrazione</a> (7)</li>
	<li><a href="http://www.undolog.com/2008/10/03/wordpress-come-scrivere-un-reply-to-comment-usando-jquery/" title="Wordpress: come scrivere un reply to comment usando jQuery (3 ottobre, 2008)">Wordpress: come scrivere un reply to comment usando jQuery</a> (18)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/YssFaTBvqHw" height="1" width="1"/>]]></content:encoded><description>I risultati delle votazioni e la proclamazione del vincitore di questa prima edizione di Miglior Blog Tecnico Italiano 2008-2009</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/15/miglior-blog-tecnico-italiano-2008-2009-proclamato-il-vincitore/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/15/miglior-blog-tecnico-italiano-2008-2009-proclamato-il-vincitore/</feedburner:origLink></item><item><title>Apple iPhone SDK 3.0: risolto baco su UIButton buttonWithType</title><link>http://feedproxy.google.com/~r/undolog/~3/wzoGquB3gcU/</link><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>iPhone</category><category>Apple</category><category>buttonWithType</category><category>CGRectMake</category><category>Compatibilità</category><category>initWithFrame</category><category>ui</category><category>UIButton</category><category>UIButtonTypeRoundedRect</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Fri, 12 Jun 2009 14:17:57 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1752</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/47SnpjN4Ttfi6ezLl3Zwn7DeFho/0/da"><img src="http://feedads.g.doubleclick.net/~a/47SnpjN4Ttfi6ezLl3Zwn7DeFho/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/47SnpjN4Ttfi6ezLl3Zwn7DeFho/1/da"><img src="http://feedads.g.doubleclick.net/~a/47SnpjN4Ttfi6ezLl3Zwn7DeFho/1/di" border="0" ismap="true"></img></a></p><p>Come indicato nel post <a href="http://www.undolog.com/2009/06/11/apple-iphone-sdk-30-prime-incompatibilita/"><em>Apple iPhone SDK 3.0: prime incompatibilità</em></a> le <strong>SDK 3.0</strong> di Apple mostrano comportamenti differenti rispetto alla release 2.2.1. Il supporto di assistenza per gli sviluppatori mi ha fornito la risposta, e quindi la soluzione al problema. La risposta del supporto tecnico è stata che <code>[UIButton buttonWithType:]</code> già chiama - al suo interno - la <code>initWithFrame</code>. Ne deriva che, sempre secondo il supporto tecnico, scrivendo:</p>
<div class="igBar"><span id="lobjc-112"><a href="#" onclick="javascript:showCodeTxt('objc-112'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-112">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIButton <span style="color: #002200;">*</span>myButton <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>UIButton buttonWithType<span style="color: #002200;">:</span>UIButtonTypeRoundedRect<span style="color: #002200;">&#93;</span> initWithFrame<span style="color: #002200;">:</span>CGRectMake<span style="color: #002200;">&#40;</span>0, 0, 100, 40<span style="color: #002200;">&#41;</span><span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Si invoca la <code>initWithFrame</code> due volte, causando la perdita del testo label. In pratica basta sostituire il codice sopra con:</p>
<div class="igBar"><span id="lobjc-113"><a href="#" onclick="javascript:showCodeTxt('objc-113'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-113">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIButton <span style="color: #002200;">*</span>myButton <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>UIButton buttonWithType<span style="color: #002200;">:</span>UIButtonTypeRoundedRect<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">myButton.frame &nbsp; &nbsp; <span style="color: #002200;">=</span> CGRectMake<span style="color: #002200;">&#40;</span>0, 0, 100, 40<span style="color: #002200;">&#41;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>La risposta originale:</p>
<div class="igBar"><span id="lcode-114"><a href="#" onclick="javascript:showCodeTxt('code-114'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-114">
<div class="code" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">+<span style="color:#006600; font-weight:bold;">&#91;</span>UIButton buttonWithType:<span style="color:#006600; font-weight:bold;">&#93;</span> already calls initWithFrame: for you. <span style="">Calling</span> it twice erases internal information that causes the problem you see with the disappearing text. <span style="">Code</span> changes in 3.0 revealed the bug. <span style="">In</span> your code, just say:</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">UIButton * restart_button = <span style="color:#006600; font-weight:bold;">&#91;</span>UIButton buttonWithType:UIButtonTypeRoundedRect<span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">restart_button.<span style="">frame</span> = CGRectMake<span style="color:#006600; font-weight:bold;">&#40;</span>40,430,100,40<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>

	Tags: <a href="http://www.undolog.com/tag/apple/" title="Apple" rel="tag">Apple</a>, <a href="http://www.undolog.com/tag/buttonwithtype/" title="buttonWithType" rel="tag">buttonWithType</a>, <a href="http://www.undolog.com/tag/cgrectmake/" title="CGRectMake" rel="tag">CGRectMake</a>, <a href="http://www.undolog.com/tag/compatibilita/" title="Compatibilità" rel="tag">Compatibilità</a>, <a href="http://www.undolog.com/tag/initwithframe/" title="initWithFrame" rel="tag">initWithFrame</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/tag/ui/" title="ui" rel="tag">ui</a>, <a href="http://www.undolog.com/tag/uibutton/" title="UIButton" rel="tag">UIButton</a>, <a href="http://www.undolog.com/tag/uibuttontyperoundedrect/" title="UIButtonTypeRoundedRect" rel="tag">UIButtonTypeRoundedRect</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/11/apple-iphone-sdk-30-prime-incompatibilita/" title="Apple iPhone SDK 3.0: prime incompatibilità (11 giugno, 2009)">Apple iPhone SDK 3.0: prime incompatibilità</a> (1)</li>
	<li><a href="http://www.undolog.com/2009/06/23/iphone-firstapp-indovina-il-numero-parte-1/" title="iPhone FirstApp: indovina il numero &#8211; parte 1 (23 giugno, 2009)">iPhone FirstApp: indovina il numero &#8211; parte 1</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/" title="Very short trick: fermare NSTimer (16 giugno, 2009)">Very short trick: fermare NSTimer</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/23/objective-c-conversione-dei-tipi/" title="Objective-C: conversione dei tipi (23 giugno, 2009)">Objective-C: conversione dei tipi</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/wzoGquB3gcU" height="1" width="1"/>]]></content:encoded><description>Come indicato nel post Apple iPhone SDK 3.0: prime incompatibilità le SDK 3.0 di Apple mostrano comportamenti differenti rispetto alla release 2.2.1. Il supporto di assistenza per gli sviluppatori mi ha fornito la risposta, e quindi la soluzione al problema. La risposta del supporto tecnico è stata che [UIButton buttonWithType:] già chiama - al suo [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/12/apple-iphone-sdk-30-risolto-baco-su-uibutton-buttonwithtype/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/12/apple-iphone-sdk-30-risolto-baco-su-uibutton-buttonwithtype/</feedburner:origLink></item><item><title>Da Actionscript ad Objective-C</title><link>http://feedproxy.google.com/~r/undolog/~3/14Hgrb6Q47c/</link><category>ActionScript</category><category>Actionscript 3.0</category><category>Flash</category><category>Flash CS3</category><category>Mobile</category><category>Objective-C</category><category>Sviluppo</category><category>Tecnologia</category><category>iPhone</category><category>ANSI-C</category><category>Apple</category><category>c</category><category>C/C++</category><category>Object-Oriented</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Giovambattista Fazioli</dc:creator><pubDate>Fri, 12 Jun 2009 01:00:26 PDT</pubDate><guid isPermaLink="false">http://www.undolog.com/?p=1725</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/raOlr-9lBKlEAhTwFRRV_UkashQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/raOlr-9lBKlEAhTwFRRV_UkashQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/raOlr-9lBKlEAhTwFRRV_UkashQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/raOlr-9lBKlEAhTwFRRV_UkashQ/1/di" border="0" ismap="true"></img></a></p><p>Ho pensato che potrebbe essere utile a chi si è avvicinato da poco allo sviluppo di <strong>applicazioni per Apple iPhone</strong>, <strong>confrontare Adobe Actionscript</strong> - il linguaggio utilizzato in <strong>Adobe Flash e Adobe Flex</strong>, più diffuso tra i neo-programmatori - e <strong>Objective-C</strong>, il linguaggio utilizzato da Apple per sviluppare le sue applicazioni. Objective-C è a tutti gli effetti un linguaggio ad oggetti nel senso puro, non che Actionscript non lo sia, ma Objective-C ha sicuramente una marcia in più in quanto è un'estensione dell'ANSI C e la sua sintassi è un mix tra C/C++ e Smalltalk; è un vero OO (Object-oriented language). Moltissime caratteristiche dell'Objective-C non sono presenti in Actionscript che, nell'ultima release 3.0, ha dimostrato di poter crescere nonostante sia ancora lontano dal profilo di un buon linguaggio di sviluppo ad oggetti.</p>
<h4>Classi</h4>
<p>Ad esempio vediamo come vengono diversamente strutturate le definizioni delle classi in Actionscript e Objective-C.</p>
<div class="igBar"><span id="lactionscript3-122"><a href="#" onclick="javascript:showCodeTxt('actionscript3-122'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript3-122">
<div class="actionscript3" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #009900; font-style: italic;">// pakage - per il namespacing di Adobe</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">pakage <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// definizione della classe vera e propria</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> MyClass <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// definizione delle proprietà (pubbliche o private)</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #6699cc; font-weight: bold;">var</span> myPropertyVar<span style="color: #000066; font-weight: bold;">:</span><a href="http://www.google.com/search?q=string%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:string.html"><span style="color: #004993;">String</span></a><span style="color: #000066; font-weight: bold;">;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// costruttore</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> MyClass<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// todo</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// metodo pubblico</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> myMethod<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// todo</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #000000;">&#125;</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #000000;">&#125;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>In Objective-C la prima differenza (ereditata dal C) è la separazione tra le "definizioni" e l'implementazione. In Objective-C avrete sempre a che fare con due tipi di file distinti: .h e .m (in C avremmo .h e .c). I file .h (header file) contengono solo le definizioni, quindi nessuna impostazione o implementazione.</p>
<div class="igBar"><span id="lobjc-123"><a href="#" onclick="javascript:showCodeTxt('objc-123'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-123">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// myClass.h</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">@interface</span> myClass <span style="color: #002200;">:</span> <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/"><span style="color: #400080;">NSObject</span></a> <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #a61390;">@public</span> <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span style="color: #400080;">NSString</span></a> <span style="color: #002200;">*</span>myPropertyVar;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>myMethod;</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">@end</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Nel file .m abbiamo invece:</p>
<div class="igBar"><span id="lobjc-124"><a href="#" onclick="javascript:showCodeTxt('objc-124'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-124">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// myClass.m</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">@implementation</span> myClass</div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span> myMethod <span style="color: #002200;">&#123;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">&nbsp; &nbsp; <span style="color: #11740a; font-style: italic;">// todo</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#125;</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #a61390;">@end</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Objective-C gestisce le proprietà e i metodi in modo abbastanza differente da Actionscript. Ad esempio il metodo <code>myMethod</code> visto in precedenza viene chiamato (o invocato) in questo modo:</p>
<div class="igBar"><span id="lobjc-125"><a href="#" onclick="javascript:showCodeTxt('objc-125'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-125">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>self myMethod<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Si parla, infatti, di Sending Message, più che di chiamata ad un metodo!</p>
<blockquote><p><strong>Nota</strong>: questa caratteristica è reale. Quando si invoca un metodo in Objective-C non si chiama un indirizzo fisico o puntatore a funzione. In Objective-C si spedisce effettivamente all'oggetto un vero e proprio messaggio dove gli si chiede di eseguire un particolare "metodo"</p>
</blockquote>
<p>La sintassi con le parentesi quadre, forse la cosa più difficile da digerire anche per gli sviluppatori ANSI C, risulta più chiara e semplice se consideriamo che:</p>
<div class="igBar"><span id="lobjc-126"><a href="#" onclick="javascript:showCodeTxt('objc-126'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-126">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">myClass.myMethod<span style="color: #002200;">&#40;</span><span style="color: #002200;">&#41;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// è uguale a</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myClass myMethod<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// oppure</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">myClass.myPropertyVar <span style="color: #002200;">=</span> <span style="color: #2400d9;color:#800000;">1978</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// uguale a</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #002200;">&#91;</span>myClass setMyPropertyVar<span style="color: #002200;">:</span>1978<span style="color: #002200;">&#93;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Per quanto riguarda la creazione di oggetti, quindi la creazione di una instanza di una classe, abbiamo:</p>
<div class="igBar"><span id="lactionscript3-127"><a href="#" onclick="javascript:showCodeTxt('actionscript3-127'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Actionscript:</span>
<div id="actionscript3-127">
<div class="actionscript3" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #6699cc; font-weight: bold;">var</span> istanceMyClass<span style="color: #000066; font-weight: bold;">:</span>MyClass = <span style="color: #0033ff; font-weight: bold;">new</span> MyClass<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="igBar"><span id="lobjc-128"><a href="#" onclick="javascript:showCodeTxt('objc-128'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">Objective-C:</span>
<div id="objc-128">
<div class="objc" style="font-family:monospace;">
<ol>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">MyClass <span style="color: #002200;">*</span>istanceMyClass <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>MyClass alloc<span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// o più semplicemente</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">MyClass <span style="color: #002200;">*</span>istanceMyClass <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>MyClass alloc<span style="color: #002200;">&#93;</span>;</div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// Objective-C non supporta in realtà un unico costruttore, come</span></div>
</li>
<li style="font-weight: normal; vertical-align:top;color:#758DB8;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// avviene invece in Actionscript: vedi ad esempio initWithName,</span></div>
</li>
<li style="font-weight: bold; vertical-align:top;color:#FF9900;">
<div style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #11740a; font-style: italic;">// initWithFrame o semplicemente init</span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Tutto questo è solo un semplice aiuto, che lascia inesplorate moltissime altre funzionalità dell'Objective-C; ci sono concetti come i puntatori (simili ai riferimenti in Actionscript - ma non uguali), i protocolli, le categorie e molto altro ancora. Se siete proprio sconfortati nell'affrontare Objective-C, come ho già consigliato altre volte, <a target="_blank" href="http://books.google.it/books?id=QR_FfKzNHPMC&#038;pg=PT1&#038;lpg=PT1&#038;dq=compra+kernigan+e+ritch+C&#038;source=bl&#038;ots=-p2gIo3xDI&#038;sig=1NZFB2QAKEpC8T8HFFpuYwh3lHc&#038;hl=it&#038;ei=isojSoamIIaU_Qa-7pzDBg&#038;sa=X&#038;oi=book_result&#038;ct=result&#038;resnum=5#PPP1,M1">partite dall'ANSI C</a>, lasciate stare - per adesso - Actionscript, Javascript o PHP! Quest'ultimi, conoscendo bene l'ANSI C, li riscoprirete sotto una luce davvero differente.</p>

	Tags: <a href="http://www.undolog.com/category/sviluppo/flash/actionscript/" title="ActionScript" rel="tag">ActionScript</a>, <a href="http://www.undolog.com/tag/actionscript/" title="ActionScript" rel="tag">ActionScript</a>, <a href="http://www.undolog.com/category/sviluppo/flash-cs3/actionscript-30/" title="Actionscript 3.0" rel="tag">Actionscript 3.0</a>, <a href="http://www.undolog.com/tag/ansi-c/" title="ANSI-C" rel="tag">ANSI-C</a>, <a href="http://www.undolog.com/tag/apple/" title="Apple" rel="tag">Apple</a>, <a href="http://www.undolog.com/tag/c/" title="c" rel="tag">c</a>, <a href="http://www.undolog.com/tag/cc/" title="C/C++" rel="tag">C/C++</a>, <a href="http://www.undolog.com/category/sviluppo/flash/" title="Flash" rel="tag">Flash</a>, <a href="http://www.undolog.com/category/sviluppo/flash-cs3/" title="Flash CS3" rel="tag">Flash CS3</a>, <a href="http://www.undolog.com/tag/iphone/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/" title="iPhone" rel="tag">iPhone</a>, <a href="http://www.undolog.com/category/mobile/" title="Mobile" rel="tag">Mobile</a>, <a href="http://www.undolog.com/tag/object-oriented/" title="Object-Oriented" rel="tag">Object-Oriented</a>, <a href="http://www.undolog.com/tag/objective-c/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/iphone-sviluppo/objective-c-sviluppo/" title="Objective-C" rel="tag">Objective-C</a>, <a href="http://www.undolog.com/category/sviluppo/" title="Sviluppo" rel="tag">Sviluppo</a>, <a href="http://www.undolog.com/category/tecnologia/" title="Tecnologia" rel="tag">Tecnologia</a><br />

	<h4>Post correlati</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.undolog.com/2009/06/01/hi-phone/" title="Hi phone (1 giugno, 2009)">Hi phone</a> (6)</li>
	<li><a href="http://www.undolog.com/2008/03/05/linguaggi-di-sviluppo/" title="Linguaggi di sviluppo (5 marzo, 2008)">Linguaggi di sviluppo</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/16/very-short-trick-fermare-nstimer/" title="Very short trick: fermare NSTimer (16 giugno, 2009)">Very short trick: fermare NSTimer</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/23/objective-c-conversione-dei-tipi/" title="Objective-C: conversione dei tipi (23 giugno, 2009)">Objective-C: conversione dei tipi</a> (0)</li>
	<li><a href="http://www.undolog.com/2009/06/29/iphone-tutti-i-font-di-sistema/" title="iPhone: tutti i font di sistema (29 giugno, 2009)">iPhone: tutti i font di sistema</a> (0)</li>
</ul>

<img src="http://feeds.feedburner.com/~r/undolog/~4/14Hgrb6Q47c" height="1" width="1"/>]]></content:encoded><description>Ho pensato che potrebbe essere utile a chi si è avvicinato da poco allo sviluppo di applicazioni per Apple iPhone, confrontare Adobe Actionscript - il linguaggio utilizzato in Adobe Flash e Adobe Flex, più diffuso tra i neo-programmatori - e Objective-C, il linguaggio utilizzato da Apple per sviluppare le sue applicazioni. Objective-C è a tutti [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.undolog.com/2009/06/12/da-actionscript-ad-objective-c/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.undolog.com/2009/06/12/da-actionscript-ad-objective-c/</feedburner:origLink></item></channel></rss>
