<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Commenti a: iPhone: l&#8217;utilissima proprietà tag</title>
	<atom:link href="http://www.undolog.com/2009/06/05/iphone-lutilissima-proprieta-tag/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.undolog.com/2009/06/05/iphone-lutilissima-proprieta-tag/</link>
	<description>Research &#38; Development  Blog</description>
	<lastBuildDate>Thu, 09 Feb 2012 11:24:28 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<item>
		<title>Di: Andrea Leganza</title>
		<link>http://www.undolog.com/2009/06/05/iphone-lutilissima-proprieta-tag/#comment-2200</link>
		<dc:creator>Andrea Leganza</dc:creator>
		<pubDate>Fri, 12 Jun 2009 12:38:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.undolog.com/?p=1679#comment-2200</guid>
		<description>Dimenticavo... in alcune situazioni è forse consigliabile usare un &lt;code inline=&quot;true&quot;&gt;iboutlet&lt;/code&gt; se usiamo IB (interface builder) oppure avere una serie di proprietà associate a tali oggetti, ai quali potremo accedere direttamente da qualunque metodo della nostra classe; il confronto se è un oggetto o un altro in questo caso si può fare semplicemente utilizzando l&#039;operatore &lt;code inline=&quot;true&quot;&gt;==&lt;/code&gt; visto che confrontiamo gli indirizzi fisici dei due oggetti (più veloce di così non si può).
Nell&#039;esempio mostrato ovviamente va benissimo, alla fine si effettua un confronto tra &quot;interi&quot; all&#039;interno dello &lt;code inline=&quot;true&quot;&gt;switch&lt;/code&gt;; ma ho visto molti utilizzare/abusare dei &lt;code inline=&quot;true&quot;&gt;tag&lt;/code&gt; per evitare di aggiungere variabili locali.

buona programmazione</description>
		<content:encoded><![CDATA[<p>Dimenticavo&#8230; in alcune situazioni è forse consigliabile usare un <code class="codecolorer text default"><span class="text">iboutlet</span></code> se usiamo IB (interface builder) oppure avere una serie di proprietà associate a tali oggetti, ai quali potremo accedere direttamente da qualunque metodo della nostra classe; il confronto se è un oggetto o un altro in questo caso si può fare semplicemente utilizzando l&#8217;operatore <code class="codecolorer text default"><span class="text">==</span></code> visto che confrontiamo gli indirizzi fisici dei due oggetti (più veloce di così non si può).<br />
Nell&#8217;esempio mostrato ovviamente va benissimo, alla fine si effettua un confronto tra &#8220;interi&#8221; all&#8217;interno dello <code class="codecolorer text default"><span class="text">switch</span></code>; ma ho visto molti utilizzare/abusare dei <code class="codecolorer text default"><span class="text">tag</span></code> per evitare di aggiungere variabili locali.</p>
<p>buona programmazione</p>
]]></content:encoded>
	</item>
	<item>
		<title>Di: Andrea Leganza</title>
		<link>http://www.undolog.com/2009/06/05/iphone-lutilissima-proprieta-tag/#comment-2199</link>
		<dc:creator>Andrea Leganza</dc:creator>
		<pubDate>Fri, 12 Jun 2009 11:26:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.undolog.com/?p=1679#comment-2199</guid>
		<description>Non si deve abusare della proprietà tag (ovviamente non è questo il caso) quando si è in situazioni in cui una view è molto struttura, che ha  quindi x subview, poichè tale elenco viene gestito con un &lt;code inline=&quot;true&quot;&gt;NSArray&lt;/code&gt;, questo viene scansito allo scopo di trovare tale &lt;code inline=&quot;true&quot;&gt;tag&lt;/code&gt;.
Se la ricerca viene effettuata confrontando numericamente i &lt;code inline=&quot;true&quot;&gt;tag&lt;/code&gt; sequenzialmente (e non credo che non venga fatto in altro modo, al massimo ordinano internamente per &lt;code inline=&quot;true&quot;&gt;tag&lt;/code&gt; le &lt;code inline=&quot;true&quot;&gt;subview&lt;/code&gt;)

&lt;code inline=&quot;true&quot;&gt;objectatindex&lt;/code&gt; non è realmente così ma l&#039;ho messo per semplicità per far capire la semantica.

[cc_objc]
ciclo scansione subviews {
   if (self.subviews.objectatindex(i).tag == tagrichiesto) {
           return self.subviews.objectatindex(i);
   }
}
[/cc_objc]

1) nel caso migliore il &lt;code inline=&quot;true&quot;&gt;tag&lt;/code&gt; è il primo quindi abbiamo effettuato un confronto
2) in un caso mediano avremo n confronti
3) nel caso peggiore, che non esista, avremo effettuato per ogni iterazione x confronti inutili

Viene spesso utilizzato per accedere alle celle delle tabelle, e in questa situazione, dove possiamo avere  centinaia di righe con x &lt;code inline=&quot;true&quot;&gt;subview&lt;/code&gt; per riga che si ha il massimo spreco (se sono 100 celle con ognuna 10 &lt;code inline=&quot;true&quot;&gt;subviews&lt;/code&gt; ipotizzando il caso peggiore del non trovato: avremo effettuato 100*10=1000 confronti inutili, per non parlare di invocazioni in cascata all&#039;array subview e ai vari metodi di analisi).</description>
		<content:encoded><![CDATA[<p>Non si deve abusare della proprietà tag (ovviamente non è questo il caso) quando si è in situazioni in cui una view è molto struttura, che ha  quindi x subview, poichè tale elenco viene gestito con un <code class="codecolorer text default"><span class="text">NSArray</span></code>, questo viene scansito allo scopo di trovare tale <code class="codecolorer text default"><span class="text">tag</span></code>.<br />
Se la ricerca viene effettuata confrontando numericamente i <code class="codecolorer text default"><span class="text">tag</span></code> sequenzialmente (e non credo che non venga fatto in altro modo, al massimo ordinano internamente per <code class="codecolorer text default"><span class="text">tag</span></code> le <code class="codecolorer text default"><span class="text">subview</span></code>)</p>
<p><code class="codecolorer text default"><span class="text">objectatindex</span></code> non è realmente così ma l&#8217;ho messo per semplicità per far capire la semantica.</p>
<div class="codecolorer-container objc vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="objc codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ciclo scansione subviews <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #a61390;">if</span> <span style="color: #002200;">&#40;</span>self.subviews.objectatindex<span style="color: #002200;">&#40;</span>i<span style="color: #002200;">&#41;</span>.tag <span style="color: #002200;">==</span> tagrichiesto<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #a61390;">return</span> self.subviews.objectatindex<span style="color: #002200;">&#40;</span>i<span style="color: #002200;">&#41;</span>;<br />
&nbsp; &nbsp;<span style="color: #002200;">&#125;</span><br />
<span style="color: #002200;">&#125;</span></div></td></tr></tbody></table></div>
<p>1) nel caso migliore il <code class="codecolorer text default"><span class="text">tag</span></code> è il primo quindi abbiamo effettuato un confronto<br />
2) in un caso mediano avremo n confronti<br />
3) nel caso peggiore, che non esista, avremo effettuato per ogni iterazione x confronti inutili</p>
<p>Viene spesso utilizzato per accedere alle celle delle tabelle, e in questa situazione, dove possiamo avere  centinaia di righe con x <code class="codecolorer text default"><span class="text">subview</span></code> per riga che si ha il massimo spreco (se sono 100 celle con ognuna 10 <code class="codecolorer text default"><span class="text">subviews</span></code> ipotizzando il caso peggiore del non trovato: avremo effettuato 100*10=1000 confronti inutili, per non parlare di invocazioni in cascata all&#8217;array subview e ai vari metodi di analisi).</p>
]]></content:encoded>
	</item>
</channel>
</rss>

