<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Still Coding</title>
	
	<link>http://marcelobaltar.com/blog</link>
	<description>Desenvolvendo aplicações para o iPhone, by Marcelo Baltar</description>
	<lastBuildDate>Thu, 26 Aug 2010 01:51:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/marcelobaltar/stillcoding" /><feedburner:info uri="marcelobaltar/stillcoding" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/marcelobaltar/stillcoding" 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%2Fmarcelobaltar%2Fstillcoding" 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%2Fmarcelobaltar%2Fstillcoding" 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%2Fmarcelobaltar%2Fstillcoding" 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://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fmarcelobaltar%2Fstillcoding" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Uma categoria útil para NSString</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/4aatCuu4DNE/</link>
		<comments>http://marcelobaltar.com/blog/2010/08/uma-categoria-util-para-nsstring/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 01:45:41 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[Categorias]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=225</guid>
		<description><![CDATA[Vi essa Categoria no blog do Jeff LaMarche e achei interessante compartilhar. Para quem não conhece o indivíduo trata-se do co-autor de dois dos mais famosos livros para desenvolvimento para iPhone: Beginning iPhone 3 Development e More iPhone 3 Development (entre outros). Blog e livro são recomendadíssimos. Bom, voltando a nossa Categoria, ela implementa um [...]]]></description>
			<content:encoded><![CDATA[<p>Vi essa Categoria no blog do Jeff LaMarche e achei interessante compartilhar. Para quem não conhece o indivíduo trata-se do co-autor de dois dos mais famosos livros para desenvolvimento para iPhone: <a href="http://www.amazon.com/Beginning-iPhone-Development-Exploring-SDK/dp/1430224592/ref=sr_1_2?s=books&amp;ie=UTF8&amp;qid=1282786529&amp;sr=1-2" target="_blank">Beginning iPhone 3 Development</a> e <a href="http://www.amazon.com/More-iPhone-Development-Tackling-Beginning/dp/143022505X/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1282786529&amp;sr=1-1" target="_blank">More iPhone 3 Development</a> (entre outros). Blog e livro são recomendadíssimos.</p>
<p>Bom, voltando a nossa Categoria, ela implementa um método :appendToFile:usingEncoding na class NSString que é bastante útil, apesar de simples. Como o nome diz, ele irá adicionar a string em questão em um arquivo texto.</p>
<p><a href="http://iphonedevelopment.blogspot.com/2010/08/nsstring-appendtofileusingencoding.html" target="_blank">Veja o código aqui</a>.</p>
<p>Atualização: o Jeff LaMarche tem um <a href="http://iphonedevelopment.blogspot.com/2010/08/funny-thing-about-old-code.html" target="_blank">post mais atualizado</a>, onde ele implementa o método na classe NSData. Convenhamos, realmente mais &#8220;genérico&#8221;.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/tkCHiLDZOyj6dkW_2A2KYnudd-E/0/da"><img src="http://feedads.g.doubleclick.net/~a/tkCHiLDZOyj6dkW_2A2KYnudd-E/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tkCHiLDZOyj6dkW_2A2KYnudd-E/1/da"><img src="http://feedads.g.doubleclick.net/~a/tkCHiLDZOyj6dkW_2A2KYnudd-E/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/4aatCuu4DNE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2010/08/uma-categoria-util-para-nsstring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2010/08/uma-categoria-util-para-nsstring/</feedburner:origLink></item>
		<item>
		<title>Expressões regulares no Objective C</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/V29UH2GBr9U/</link>
		<comments>http://marcelobaltar.com/blog/2009/08/expressoes-regulares-no-objective-c/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 14:05:23 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[biblioteca]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[expressões regulares]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[regular expressions]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=216</guid>
		<description><![CDATA[Expressões regulares (regular expressions) são extremamente úteis na manipulação de strings. Infelizmente não existe um suporte para elas ainda no Cocoa. Para usar expressões regulares em aplicações para o iPhone ou Mac, é preciso recorrer a bibliotecas desenvolvidas por terceiros. Este post traz alguns links para bibliotecas que implementam expressões regulares.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-221" title="regex" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/regex.png" alt="regex" width="200" height="87" />Expressões regulares são uma ferramenta essencial para todo desenvolvedor. Se sua aplicação precisa fazer validações, parsing ou qualquer manipulação com strings, com certeza você pode se beneficiar muito utilizando-a.</p>
<p>O problema é que (ainda, espero!) não existe nenhuma classe/biblioteca no Cocoa que nos permita utilizar expressões regulares em toda sua plenitude. A classe <a title="NSPredicate" href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/Reference/NSPredicate.html#//apple_ref/doc/uid/TP30001187-DontLinkElementID_3" target="_blank">NSPredicate</a> faz <a href="http://www.stiefels.net/2007/01/24/regular-expressions-for-nsstring/" target="_blank">alguma coisa</a>, mas é ainda limitada. O jeito então é utilizarmos bibliotecas de terceiros.</p>
<p>Uma boa biblioteca para aplicações para o iPhone é a <a title="RegexKitLite" href="http://regexkit.sourceforge.net/RegexKitLite/index.html" target="_blank">RegexKitLite</a>. Ela possui um <em>footprint </em>baixo (16KB a 20KB), o que a torna ótima para um dispositivo móvel com restrições de recursos. Um problema com esta implementação é que ela linka com uma biblioteca que a Apple ainda não liberou uma interface pública oficial (libicucore.dylib), como apontado em sua própria documentação. Existe uma chance que isto venha a acontecer no futuro, como mostra <a href="http://lists.apple.com/archives/xcode-users/2005/Jun/msg00633.html" target="_blank">esta mensagem na lista de mensagens da Apple para o Xcode</a>. Outra vantagem desde projeto é que ele possui uma excelente documentação, que pode inclusive ser incluída no Help do Xcode.</p>
<p>Existem outras alternativas:</p>
<ul>
<li><a href="http://sourceforge.net/projects/agkit/" target="_blank">AGRegEx</a> &#8211; Faz parte do AGKit, uma biblioteca para Cocoa com outras funcionalidades (sockets, processos)</li>
<li><a href="http://sourceforge.net/projects/objpcre/" target="_blank">ObjPCRE</a></li>
<li><a href="http://mokit.sourceforge.net/" target="_blank">MOKit</a></li>
<li><a href="http://www.omnigroup.com/developer/" target="_blank">OFRegularExpression</a></li>
</ul>
<p>Veja também o excelente artigo <a href="http://net.tutsplus.com/tutorials/other/8-regular-expressions-you-should-know/" target="_blank"><em>&#8220;8 Regular Expressions You Should Know&#8221;</em></a> para alguns usos muito úteis de expressões regulares.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/3aN0cYG4hP2Zk3XLzg-MSRtIAFc/0/da"><img src="http://feedads.g.doubleclick.net/~a/3aN0cYG4hP2Zk3XLzg-MSRtIAFc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/3aN0cYG4hP2Zk3XLzg-MSRtIAFc/1/da"><img src="http://feedads.g.doubleclick.net/~a/3aN0cYG4hP2Zk3XLzg-MSRtIAFc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/V29UH2GBr9U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2009/08/expressoes-regulares-no-objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2009/08/expressoes-regulares-no-objective-c/</feedburner:origLink></item>
		<item>
		<title>Utilizando Views criadas no Interface Builder</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/XNaKaX1OT5Q/</link>
		<comments>http://marcelobaltar.com/blog/2009/08/utilizando-views-criadas-no-interface-builder/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 02:01:21 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[interface builder]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[interfacebuilder]]></category>
		<category><![CDATA[View]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=140</guid>
		<description><![CDATA[No último post vimos como criar um ViewController via código. Isso não é nem um pouco prático, mas para algumas situações específicas pode ser útil. Bom, mas dizem por aí que todo bom programador tem como &#8220;virtude&#8221; ser preguiçoso. Virtude porque a preguiça o obriga a encontrar maneiras mais fáceis de fazer as coisas chatas [...]]]></description>
			<content:encoded><![CDATA[<p>No <a href="http://marcelobaltar.com/blog/2009/06/criando-um-viewcontroller-na-mao/" target="_blank">último post</a> vimos como criar um ViewController via código. Isso não é nem um pouco prático, mas para algumas situações específicas pode ser útil.</p>
<p>Bom, mas dizem por aí que todo bom programador tem como &#8220;virtude&#8221; ser preguiçoso. <em>Virtude </em>porque a preguiça o obriga a encontrar maneiras mais fáceis de fazer as coisas chatas e/ou repetitivas. Vamos então ver como criar Views para suas apps de uma maneira bem mais fácil.</p>
<p>Ao tutorial:</p>
<p>Abra o Xcode e crie um novo projeto usando o template <em>View Based Application. </em>Dê um nome bem criativo ao seu projeto como, por exemplo, <em>Teste</em>. <img src='http://marcelobaltar.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img class="aligncenter size-full wp-image-151" title="New View Based App" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/new-project.png" alt="New View Based App" width="491" height="401" /></p>
<p style="text-align: center;"><a style="text-decoration: none;" rel="wp-prettyPhoto" href="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/Picture-1.png" rel="wp-prettyPhoto[g140]"><span style="text-decoration: underline;"> </span><span style="text-decoration: underline;"> </span></a></p>
<p><span id="more-140"></span>O Xcode irá criar um projeto bem simples, com uma View (TestViewController.xib) e seu respectivo Controller (TesteViewController.m e TesteViewController.h). A view que criaremos no Interface Builder será, na verdade, uma subview da que foi criada automaticamente pelo Xcode. Tudo bem simples, só para passar o conceito.</p>
<p>Vamos declarar nossa subview dentro do controller criado automaticamente pelo Xcode. Abra o arquivo TesteViewController.h e acrescente a declaração:</p>
<pre class="brush: cpp;">
@interface TesteViewController : UIViewController {
    UIView *subView;
}

@property (nonatomic, retain) IBOutlet UIView *subView;
</pre>
<p>Depois faça o synthesize da propriedade no TesteViewController.m:</p>
<pre class="brush: cpp;">

#import &quot;TesteViewController.h&quot;

@implementation TesteViewController

@synthesize subView;
</pre>
<p>Agora vamos criar nossa view no Interface Builder e fazer as conexões necessárias para nosso controller &#8220;enxergá-la&#8221;. Selecione <em>Resources </em>na painel esquerdo e adicione um novo arquivo.</p>
<p><img class="aligncenter size-medium wp-image-188" title="2-xcode-new-file" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/2-xcode-new-file-300x220.png" alt="2-xcode-new-file" width="300" height="220" /></p>
<p>Escolha &#8220;<em>User Interface</em>&#8221; nas opções à esquerda e selecione o template<em> View XIB</em>.</p>
<p><img class="aligncenter size-medium wp-image-189" title="3-xcode-new-resource" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/3-xcode-new-resource-300x245.png" alt="3-xcode-new-resource" width="300" height="245" /></p>
<p>Novamente, escolha um nome criativo para nossa view: <em>SubView</em>. Ao retornar ao Xcode, de um duplo clique no arquivo SubView.xib criado, para abri-lo no IB.</p>
<p>O Xcode criou para nós uma  subview do tamanho da tela inteira. Mas nós queremos ela menor, para inserí-la na view principal. Normalmente é assim que você irá fazer nas suas aplicações, é claro. A subview será um dos componentes do layout da view principal, junto com outros elementos e/ou controles.</p>
<p>Tem um &#8220;macete&#8221; para fazer com que o IB nos deixe alterar o tamanho da nossa view para o valor desejado. Na janela <em>Attributes Inspector</em> (abra com Cmd-1)<em> </em>selecione <strong>None </strong>para <em>Status Bar</em>.</p>
<p><img class="aligncenter size-full wp-image-191" title="4-ib-status-bar-none" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/4-ib-status-bar-none.png" alt="4-ib-status-bar-none" width="289" height="281" /></p>
<p>Com isso os campos que permitem alterar o tamanho da nossa view são habilitados. Vá para a janela <em>Size Inspector</em> (Cmd-3) e mude o H: (height &#8211; altura) para 40). Deixe o campo W: (width &#8211; comprimento) em 320.</p>
<p><img class="aligncenter size-full wp-image-192" title="5-ib-view-size" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/5-ib-view-size.png" alt="5-ib-view-size" width="301" height="249" /></p>
<p>Bom, vamos fazer alguma firula na nossa subview para que possamos enxergá-la quando for adicionada à sua view &#8220;pai&#8221; (caso contrário ambas estariam com a mesma cor default e não seria possível fazer a distinção entre elas). Acrescente um label à view e mude a cor de fundo. Por exemplo:</p>
<p><img class="aligncenter size-full wp-image-193" title="6-ib-view" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/6-ib-view.png" alt="6-ib-view" width="400" height="142" /></p>
<p>Agora um dos passos mais importantes: temos que dizer quem será o controller que irá responder por esta view e conectá-la à propriedade correta deste controller. É isto que nos permitirá manipulá-la no nosso código.</p>
<p>Selecione &#8220;<em>File&#8217;s Owner</em>&#8221; na janela com os componentes da nossa SubView.xib:</p>
<p><img class="aligncenter size-full wp-image-194" title="10-ib-files-owner" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/10-ib-files-owner.png" alt="10-ib-files-owner" width="473" height="167" /></p>
<p>Na janela <em>Identity Inspector</em> (Cmd-4) e escolha a classe do nosso controller (TesteViewController) no campo <strong>Class</strong>.</p>
<p><img class="aligncenter size-full wp-image-213" title="identity-inspector" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/identity-inspector.png" alt="identity-inspector" width="298" height="255" /></p>
<p>Com isto dizemos à SubView que o controller dela será o já criado TesteViewController. Agora falta informar qual das propriedades deste controller refere-se ao componente UIView. Clique com o botão direito no <em>File&#8217;s Owne</em>r da janela SubView.xib e conecte a propriedade <strong>subView </strong>ao componente View, como mostrado na figura abaixo:</p>
<p><img class="aligncenter size-full wp-image-195" title="11-ib-connect" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/11-ib-connect.png" alt="11-ib-connect" width="500" height="299" /></p>
<p>Pronto! Layout (maravilhoso&#8230;) criado e conexões feitas. Terminamos no IB. Volte ao Xcode e vamos acrescentar o código que mostra nossa view.</p>
<p>Abra o arquivo TestViewController.m e procure pelo método <strong>viewDidLoad </strong>e acrescente o código abaixo:</p>
<pre class="brush: cpp;">

- (void)viewDidLoad {
    [super viewDidLoad];

    [[NSBundle mainBundle] loadNibNamed:@&quot;SubView&quot; owner:self options:nil];
    self.subView.frame = CGRectMake(0.0, 50.0, 320.0, 40.0);
    [self.view addSubview:self.subView];
}
</pre>
<p>Na linha 4 estamos lendo do bundle da nossa app o arquivo NIB que contém nossa view. Depois, na linha 5, setamos a posição da nossa view dentro da view pai. Por fim, adicionamos a SubView na view pai. Voilá!</p>
<p>O &#8220;segredo&#8221; das coisas funcionarem, e o Xcode saber que nossa &#8220;SubView.xib&#8221; corresponde à propriedade <strong>subView </strong>do nosso controller, está na conexão feita lá em cima, no IB. Lembre-se sempre disso, pois é muito comum os desenvolvedores esquecerem este passo e depois ficarem malucos tentando entender porque sua aplicação não funciona corretamente. <img src='http://marcelobaltar.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Rode o programa e o resultado será algo assim:</p>
<p><img class="aligncenter size-full wp-image-198" title="12-ui-example" src="http://marcelobaltar.com/blog/wp-content/uploads/2009/08/12-ui-example.png" alt="12-ui-example" width="397" height="740" /></p>
<p>É isto! Bem simples, como deveria ser mesmo. Quando for pensar no layout das suas aplicações, tenha em mente como esta técnica pode facilitar seu trabalho. Criar as views no IB é sempre mais fácil do que fazê-lo &#8220;na mão&#8221;.</p>
<p>Claro que existem considerações: alguns layouts podem ser um pouco mais complicados e não serem possíveis de serem feitos no IB. Outro fator a ser levado em conta é que a leitura de um arquivo de resource do &#8220;disco&#8221; é uma tarefa que demanda mais do hardware do iPhone do que construí-la no código (além do recurso gastar mais espaço). Para muitas aplicações isto, claro, não fará diferença. Avalie caso a caso.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/vjrr7DhiyCxuHrVA3sYf7Nw6_ro/0/da"><img src="http://feedads.g.doubleclick.net/~a/vjrr7DhiyCxuHrVA3sYf7Nw6_ro/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/vjrr7DhiyCxuHrVA3sYf7Nw6_ro/1/da"><img src="http://feedads.g.doubleclick.net/~a/vjrr7DhiyCxuHrVA3sYf7Nw6_ro/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/XNaKaX1OT5Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2009/08/utilizando-views-criadas-no-interface-builder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2009/08/utilizando-views-criadas-no-interface-builder/</feedburner:origLink></item>
		<item>
		<title>Criando um ViewController “na mão”</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/7zeQis-VSVM/</link>
		<comments>http://marcelobaltar.com/blog/2009/06/criando-um-viewcontroller-na-mao/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 01:53:09 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[cocoa]]></category>
		<category><![CDATA[interface builder]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=131</guid>
		<description><![CDATA[Tem muita gente que adora criar as telas de suas aplicações &#8220;na mão&#8221;, ou seja, batucando direto o código em um arquivo fonte qualquer (ou xml, dependendo da linguagem/framework/ambiente/etc.), ao invés de utilizar uma ferramenta própria para isso. No mundo do iPhone SDK estamos, claro, falando do Interface Builder. Eu nunca entendi essa preferência, para [...]]]></description>
			<content:encoded><![CDATA[<p>Tem muita gente que adora criar as telas de suas aplicações &#8220;na mão&#8221;, ou seja, batucando direto o código em um arquivo fonte qualquer (ou xml, dependendo da linguagem/framework/ambiente/etc.), ao invés de utilizar uma ferramenta própria para isso. No mundo do iPhone SDK estamos, claro, falando do <strong>Interface Builder</strong>.</p>
<p>Eu nunca entendi essa preferência, para ser sincero. Em se tratando de uma excelente ferramenta como o IB, o caso fica ainda mais grave. Antes de ter contato com ele, já havia utilizado quase tudo que existe disponível por aí (Delphi, VB, Visual Studio, Eclipse, Netbeans&#8230;), então posso falar sem medo: o Interface Builder é realmente excelente. Não deixa a desejar em nada e, a despeito de algumas idiossincrasias típicas do mundo Apple, não tem como não ficar fã.</p>
<p>Mas para quem prefere o estilo &#8220;mão na massa&#8221; para criar suas interfaces visuais, o <a href="http://howtomakeiphoneapps.com/" target="_blank">Matt Campbell</a> fez um post onde ele ensina<a href="http://howtomakeiphoneapps.com/2009/05/how-to-use-a-view-controller-programatically/" target="_blank"> como criar um ViewController através de código</a>. Na verdade é algo bem simples de ser feito (tirando o trabalho de ficar criando todos os controles no código), mas achei interessante divulgar a dica porque acaba sendo útil para entender um pouco mais o <em>under the hoods</em> no Cocoa Touch. Em especial como e onde o Application Delegate cria a View inicial e essa View cria os controles que irão compor a interface com o usuário.</p>
<p>Resumo rápido:</p>
<ol>
<li>No <strong>AppDelegate:applicationDidFinishLaunching</strong> você cria sua View e a adiciona à <strong>window</strong> (objeto já existente na AppDelegate &#8211; você usou os templates do Xcode, certo?).</li>
<li>No ViewController: loadView você cria seus controles visuais e os adiciona à view.</li>
</ol>

<p><a href="http://feedads.g.doubleclick.net/~a/UGLpu6bn71-aRwV2McSqwDg5GG4/0/da"><img src="http://feedads.g.doubleclick.net/~a/UGLpu6bn71-aRwV2McSqwDg5GG4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/UGLpu6bn71-aRwV2McSqwDg5GG4/1/da"><img src="http://feedads.g.doubleclick.net/~a/UGLpu6bn71-aRwV2McSqwDg5GG4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/7zeQis-VSVM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2009/06/criando-um-viewcontroller-na-mao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2009/06/criando-um-viewcontroller-na-mao/</feedburner:origLink></item>
		<item>
		<title>Xcode macros cheatsheet</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/7mUrbC_ewfw/</link>
		<comments>http://marcelobaltar.com/blog/2009/04/xcode-macros-cheatsheet/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 13:15:32 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=127</guid>
		<description><![CDATA[Já que postei há pouco tempo sobre macros do Xcode, aí vai uma dica rápida: um cheatsheet com as macros que vêm pré-definidas durante a instalação. E não esqueça de contribuir com suas macros no projetinho que abri no Github.]]></description>
			<content:encoded><![CDATA[<p>Já que <a href="http://marcelobaltar.com/blog/2009/03/como-criar-macros-no-xcode/" target="_blank">postei</a> há pouco tempo sobre macros do Xcode, aí vai uma dica rápida: um <a href="http://www.mobileorchard.com/wp-content/uploads/2009/04/xcode-macros-cheatsheet.pdf" target="_blank">cheatsheet</a> com as macros que vêm pré-definidas durante a instalação.</p>
<p>E não esqueça de contribuir com suas macros no projetinho que abri no <a href="http://github.com/marcelobaltar/xcode-macros/tree" target="_blank">Github</a>. <img src='http://marcelobaltar.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/wHWYsdR-PMW3NgoN7wU9aWhGw9k/0/da"><img src="http://feedads.g.doubleclick.net/~a/wHWYsdR-PMW3NgoN7wU9aWhGw9k/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wHWYsdR-PMW3NgoN7wU9aWhGw9k/1/da"><img src="http://feedads.g.doubleclick.net/~a/wHWYsdR-PMW3NgoN7wU9aWhGw9k/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/7mUrbC_ewfw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2009/04/xcode-macros-cheatsheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2009/04/xcode-macros-cheatsheet/</feedburner:origLink></item>
		<item>
		<title>Be on the Net</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/E5ozRuCZK4c/</link>
		<comments>http://marcelobaltar.com/blog/2009/04/beonthenet/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 19:12:14 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=120</guid>
		<description><![CDATA[Vou abrir um espaço no blog hoje para falar de um assunto diferente. O grande Vinicius Teles, da ImproveIt, postou um pedido para &#8220;dar uma mãozinha&#8221; para eles na divulgação de um produto que lançaram recentemente, o Be on the Net. Faço isso com todo o prazer! Já conheço o trabalho do Vinicius (e, por [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://beonthe.net/"><img class="alignleft" title="Be on the Net" src="http://assets0.beonthe.net/accounts/beonthe.net/images/logo.gif?1229608383" alt="" width="210" height="55" /></a>Vou abrir um espaço no blog hoje para falar de um assunto diferente. O grande Vinicius Teles, da ImproveIt, <a href="http://blog.improveit.com.br/articles/2009/04/08/uma-m%C3%A3ozinha-at%C3%A9-que-n%C3%A3o-ia-mal" target="_blank">postou</a> um pedido para &#8220;dar uma mãozinha&#8221; para eles na divulgação de um produto que lançaram recentemente, o <a href="http://beonthe.net/" target="_self">Be on the Net</a>.</p>
<p>Faço isso com todo o prazer! Já conheço o trabalho do Vinicius (e, por tabela, da galera da ImproveIt) desde <span style="text-decoration: line-through;">2007</span> 2006, quando comecei a me envolver mais fortemente com metodologias ágeis. Nessa época era impossível não cair no site da ImproveIt em qualquer busca pelo assunto. Era uma referência excelente, com MUITO material de qualidade, além do blog e do podcast comandados pelo Vinicius.</p>
<p>Tive oportunidade também de assistir uma palestra dele no 1°. Minas on Rails, na qual ele, como de costume, brilhou. É um cara super didático nas suas explicações e consegue, com metáforas muito bem colocadas, traduzir de maneira clara as suas idéias, tanto nas palestras quanto no blog, artigos, etc.</p>
<p>Enfim, aprendi e aprendo muito com esse cara e agora espero conseguir retribuir de alguma forma, ajudando na divulgação do trabalho. Trabalho que, por sinal, é muito bom. Sugiro que conheçam o <a href="http://beonthe.net/" target="_blank">Be on the Net</a> e também o modelo de negócios que está por trás da iniciativa, principalmente se você é um empreendedor da rede.</p>
<p>Pra quem achar que é só propaganda, fica a dica para acompanhar o <a href="http://blog.improveit.com.br/" target="_blank">blog da ImproveIt</a> e também o Vinicius no <a href="http://twitter.com/viniciusteles" target="_blank">Twitter</a>. Sempre tem conteúdo muito bom vindo dele!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/p2Ezh8tn68Su_JunpWxyUzt6Grs/0/da"><img src="http://feedads.g.doubleclick.net/~a/p2Ezh8tn68Su_JunpWxyUzt6Grs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/p2Ezh8tn68Su_JunpWxyUzt6Grs/1/da"><img src="http://feedads.g.doubleclick.net/~a/p2Ezh8tn68Su_JunpWxyUzt6Grs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/E5ozRuCZK4c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2009/04/beonthenet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2009/04/beonthenet/</feedburner:origLink></item>
		<item>
		<title>Como criar macros no Xcode</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/0UInV1FjDkc/</link>
		<comments>http://marcelobaltar.com/blog/2009/03/como-criar-macros-no-xcode/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 02:13:09 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=95</guid>
		<description><![CDATA[Acho que não deve ter um usuário do Xcode que não seja fã do code completion dele. Funciona maravilhosamente bem e é surpreendente a produtividade que ele proporciona ao desenvolvedor. Já utilizei diversas IDEs com este tipo de recurso, mas o Xcode conseguiu inovar e trazer uma forma mais interessante de adivinhar seu código. Umas [...]]]></description>
			<content:encoded><![CDATA[<p>Acho que não deve ter um usuário do Xcode que não seja fã do code completion dele. Funciona maravilhosamente bem e é surpreendente a produtividade que ele proporciona ao desenvolvedor. Já utilizei diversas IDEs com este tipo de recurso, mas o Xcode conseguiu inovar e trazer uma forma mais interessante de adivinhar seu código. Umas poucas letras digitadas e dá-lhe TAB (ou ENTER, dependendo do freguês), um atrás do outro, para ver seu código ser inserido. É começar a usar e se apaixonar.</p>
<p>Mas é claro que o que é bom pode ficar melhor ainda. Você pode criar suas próprias macros para facilitar ainda mais sua vida. Está cansado de digitar:<br />
<code><br />
@property (nonatomic, retain) NSTipoQualquer minhaPropriedade<br />
</code><br />
nas suas interfaces?</p>
<p>Então é só criar uma macro que irá inserir o texto acima quando você digitar &#8220;@prop&#8221;, por exemplo. E colocando <em>&#8220;placeholders&#8221;</em> nos lugares certos (em <em>NSTipoQualquer</em> e <em>minhaPropriedade</em>), para facilitar a navegação e substituições necessárias.</p>
<p>O Xcode já vem com uma série de macros pré-definidas. Elas ficam no diretório <strong><em>/Developer/Applications/Xcode.app/Contents/PlugIns/TextMacros.xctxtmacro/Contents/Resources/</em></strong>. Macros criadas pelo usuário devem ser colocadas no diretório <strong><em>~/Library/Application Support/Developer/Shared/Xcode/Specifications</em></strong>.</p>
<p>Para criar a macro @property acima, siga os passos:</p>
<ol>
<li>Crie o arquivo <em>ObjectiveC.xctxtmacro</em> no diretório <strong><em>~/Library/Application Support/Developer/Shared/Xcode/Specifications</em></strong>. Você provavelmente vai precisar criar este diretório, pois ele não é criado na instalação do Xcode.</li>
<li>Insira o código abaixo no seu arquivo <em>ObjectiveC.xctxtmacro</em>:
<pre class="brush: plain;">
/**
    Objective C text macro specifications
  by Marcelo Baltar
*/

(
  {
    Identifier = objc.msb.property;
    BasedOn = objc;
    IsMenuItem = NO;
    Name = &quot;@property definition&quot;;
    TextString = &quot;@property (nonatomic, retain) &lt;#datatype#&gt; &lt;#property#&gt;&quot;;
    CompletionPrefix = &quot;@prop&quot;;
    IncludeContexts = ( &quot;xcode.lang.objc.interface&quot; );
  },
)
</pre>
</li>
<li>Reinicie o Xcode (sim, essa é a parte chata: toda edição nos arquivos das macros só será reconhecida após você reiniciar o Xcode).</li>
</ol>
<p><span id="more-95"></span></p>
<p>Vamos dar uma olhada no arquivo para entendê-lo. As propriedades que definem uma macro devem estar entre colchetes. Se você criar várias macros em um mesmo arquivo (o que você provavelmente irá fazer), não se esqueça de separar cada definição com uma vírgula.</p>
<p>As propriedades que utilizamos para definir nossa macro foram:</p>
<p><strong>Identifier</strong>: identificador único da macro. Pode ser qualquer string, desde que única entre suas macros. Mas, claro, tente colocar algo que faça sentido. No exemplo, utilizei <em>obj</em> para identificar uma macro para Objective-C (seguindo uma convenção da Apple), <em>msb</em> são as minhas iniciais <img src='http://marcelobaltar.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  e <em>property</em> é um nome que escolhi identificando o comando sobre o qual a macro será aplicada.</p>
<p><strong>BasedOn</strong>: Define o &#8220;pai&#8221; dessa macro. Quaisquer propriedades não setadas na definição da sua macro serão herdadas do &#8220;pai&#8221; que você definir aqui. No nosso exemplo, estamos herdando da definição de <em>objc</em>.</p>
<p><strong>IsMenuItem</strong>: Determina se a macro irá aparecer no menu Edit → Insert Text Macro.</p>
<p><strong>Name</strong>: Nome da macro, que irá aparecer no menu Edit → Insert Text Macro, se  a propriedade IsMenuItem estiver setada (YES).</p>
<p><strong>TextString</strong>: A string que efetivamente será inserida no seu código. Note que você pode configurar alguns placeholders, utilizando a sintaxe &lt;#nome_do_placeholder#&gt;. Lembrando que placeholders são aquelas posições na string inserida pelo code completion pelas quais você pode navegar com uma combinação de teclas (^/ por default).</p>
<p><strong>CompletionPrefix</strong>: Essa é a macro que será substituída pelo conteúdo definido pela propriedade TextString.</p>
<p><strong>IncludeContexts/ExcludeContexts:</strong> Essa propriedade serve para você definir um escopo onde sua macro funcionará. Ela não é obrigatória, mas é útil se você quiser utilizar, por exemplo, macros iguais com comportamentos diferentes, dependendo de onde ela for inserida, ou simplesmente para evitar situações onde a macro não se aplica. No nosso exemplo, o code completion só irá substituir @prop quando estiver definido dentro de uma @interface, o que faz todo o sentido.&#8217;</p>
<h2>Algumas observações</h2>
<p>Tenha muito cuidado com a sintaxe do arquivo, porque qualquer erro impedirá que o Xcode faça o parsing adequadamente e a mensagem de erro dele não será nem um pouco amigável. Isso se ele der alguma mensagem de erro. Ele pode simplesmente ignorar todo seu arquivo, ou uma parte dele, tornando bastante difícil a identificação do erro. Em especial, lembre-se sempre de fazer o correto <em>escape</em> das aspas, usando a barra invertida. Por exemplo:<br />
<code><br />
TextString = "NSString *meuBlog = @\"Still Coding\"";<br />
</code></p>
<p>Você pode usar o mesmo valor do <strong>CompletionPrefix</strong> para diversas macros. Basta usar o atalho de teclado <em>Next Completion</em> para alternar entre as definições.</p>
<p>Os valores permitidos para as propriedades <strong>IncludeContext</strong> e <strong>ExcludeContext</strong> são:<br />
<code><br />
"xcode.lang.objc.block"<br />
"xcode.lang.objc.bracketexpr"<br />
"xcode.lang.objc.parenexpr"<br />
"xcode.lang.objc.interface"<br />
"xcode.lang.objc.implementation",<br />
"xcode.lang.objc.protocol.declaration",<br />
"xcode.lang.objc.protocol",<br />
"xcode.lang.objc.function.declaration",<br />
"xcode.lang.objc.function.definition",<br />
"xcode.lang.objc.typedef",<br />
"xcode.lang.objc.initializer"<br />
</code></p>
<p>Criei um projetinho no <a href="http://github.com/marcelobaltar/xcode-macros/tree" target="_blank">github</a> para ir colocando algumas macros que eu for definindo ao longo da vida. Fique à vontade para fazer um fork e contribuir com suas macros!</p>
<p><strong>Disclaimer</strong>: As idéias para este post foram retiradas deste <a href="http://www.turkeysheartrhinos.com/?p=8#custom_macros" target="_blank">excelente artigo</a>. Não deixe de visitá-lo para informações adicionais.</p>
<p>Em tempo: confira também <a href="http://iphonedevelopertips.com/xcode/xcode-code-completion.html" target="_blank">esse post</a> para saber mais sobre o autocompletion do Xcode.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/WD19WnLu4X2VN3tNrYvdChxz4z8/0/da"><img src="http://feedads.g.doubleclick.net/~a/WD19WnLu4X2VN3tNrYvdChxz4z8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/WD19WnLu4X2VN3tNrYvdChxz4z8/1/da"><img src="http://feedads.g.doubleclick.net/~a/WD19WnLu4X2VN3tNrYvdChxz4z8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/0UInV1FjDkc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2009/03/como-criar-macros-no-xcode/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2009/03/como-criar-macros-no-xcode/</feedburner:origLink></item>
		<item>
		<title>LiveView: excelente aplicação para protótipos… e free!</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/Me4I0BcGKZ4/</link>
		<comments>http://marcelobaltar.com/blog/2009/03/liveview-excelente-aplicacao-para-prototipos-e-free/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 00:05:21 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[ferramenta]]></category>
		<category><![CDATA[liveview]]></category>
		<category><![CDATA[protótipo]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=85</guid>
		<description><![CDATA[O LiveView é uma aplicação que auxilia a criação de protótipos durante o desenvolvimento de aplicações para o iPhone]]></description>
			<content:encoded><![CDATA[<p>Aproveitem enquanto é tempo: <a href="http://labs.ideo.com/2009/01/20/liveview-an-iphone-app-for-on-screen-prototyping/" target="_blank">LiveView</a> é free (por um período limitado, segundo o fabricante). Trata-se de uma aplicação MUITO útil para construir protótipos para suas aplicações do iPhone. O funcionamento é simples: basta instalar uma aplicação no iPhone e outra no seu Mac (o ScreenCaster). O ScreenCaster captura a tela que estiver por baixo da aplicação, mantendo o tamanho fiel do iPhone, e envia para a aplicação no iPhone, através da rede wi-fi. Simples, mas muito eficaz.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://labs.ideo.com/wp-content/uploads/2009/01/liveview_onphone.jpg" alt="" width="500" height="627" /></p>

<p><a href="http://feedads.g.doubleclick.net/~a/wI1xe6r5Qh63plcgf1-AxkGa384/0/da"><img src="http://feedads.g.doubleclick.net/~a/wI1xe6r5Qh63plcgf1-AxkGa384/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wI1xe6r5Qh63plcgf1-AxkGa384/1/da"><img src="http://feedads.g.doubleclick.net/~a/wI1xe6r5Qh63plcgf1-AxkGa384/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/Me4I0BcGKZ4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2009/03/liveview-excelente-aplicacao-para-prototipos-e-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2009/03/liveview-excelente-aplicacao-para-prototipos-e-free/</feedburner:origLink></item>
		<item>
		<title>Dica para publicação de jogos na AppStore</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/G2yqwUqs85I/</link>
		<comments>http://marcelobaltar.com/blog/2009/03/dica-para-publicacao-de-jogos-na-appstore/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 14:38:29 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[appstore]]></category>
		<category><![CDATA[appstore jogos]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=80</guid>
		<description><![CDATA[Dica para desenvolvedores brasileiro publicar jogos na AppStore]]></description>
			<content:encoded><![CDATA[<p>O Blog do iPhone publicou <a href="http://www.blogdoiphone.com/2009/03/atraso-na-publicacao-de-jogos-na-app-store-nacional/" target="_blank">um post</a> com uma dica de como os desenvolvedores brasileiros de jogos podem fazer para disponibilizá-los na AppStore.</p>
<p>Como você deve saber, a categoria Jogos não existe na AppStore nacional. E a maneira que alguns desenvolvedores encontram para &#8220;burlar&#8221; essa limitação é colocar o jogo na categoria &#8220;Entreterimento&#8221;.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.blogdoiphone.com/wp-content/uploads/2009/03/appstoreaprouval.jpg" alt="" width="387" height="183" /></p>
<p>O porém é que, nas AppStores não brasileiras, o ideal é que seja utilizada realmente a categoria Jogos, pois isso dá uma visibilidade muito maior ao trabalho.</p>
<p>Mas deixo o resto da história para o Blog do iPhone <a href="http://www.blogdoiphone.com/2009/03/atraso-na-publicacao-de-jogos-na-app-store-nacional/" target="_blank">contar</a>&#8230;</p>

<p><a href="http://feedads.g.doubleclick.net/~a/soz2aI660QgR6k4o2zwrVJYxIKE/0/da"><img src="http://feedads.g.doubleclick.net/~a/soz2aI660QgR6k4o2zwrVJYxIKE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/soz2aI660QgR6k4o2zwrVJYxIKE/1/da"><img src="http://feedads.g.doubleclick.net/~a/soz2aI660QgR6k4o2zwrVJYxIKE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/G2yqwUqs85I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2009/03/dica-para-publicacao-de-jogos-na-appstore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2009/03/dica-para-publicacao-de-jogos-na-appstore/</feedburner:origLink></item>
		<item>
		<title>Biblioteca open source para iPhone: Three20</title>
		<link>http://feedproxy.google.com/~r/marcelobaltar/stillcoding/~3/XdcUqqkHfe0/</link>
		<comments>http://marcelobaltar.com/blog/2009/03/biblioteca-open-source-para-iphone-three20/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 14:28:22 +0000</pubDate>
		<dc:creator>Marcelo Baltar</dc:creator>
				<category><![CDATA[biblioteca]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://marcelobaltar.com/blog/?p=69</guid>
		<description><![CDATA[Biblioteca open source para iPhone: Three20]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://farm4.static.flickr.com/3432/3378117315_846547cfba_m.jpg" alt="" width="125" height="240" /><a href="http://joehewitt.com" target="_blank">Joe Hewitt</a>, autor da aplicação Facebook Connect (adivinha o que ela faz? <img src='http://marcelobaltar.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), disponibilizou uma biblioteca de controles para o iPhone como um projeto open source, chamada <a href="http://joehewitt.com/post/the-three20-project/" target="_blank">Three20</a>. (Curiosidade: o nome foi escolhido por causa da resolução da tela do iPhone, 320 pixels)</p>
<p>São vários controles utilizados na própria aplicação para o Facebook, bastante interessantes:</p>
<ul>
<li><strong>Photo Viewer</strong> - Funcionalidade similar ao álbum de fotos do iPhone, com um grande diferencial: as fotos não precisam estar no aparelho, podem ser puxadas da rede/internet.<strong></strong></li>
<li><strong>Message composer</strong> &#8211; Para criar mensagens de e-mail de dentro da sua aplicação.</li>
</ul>
<ul>
<li><strong>Web image views</strong> &#8211; Para mostrar imagens a partir de uma url.</li>
<li><strong>Internet-aware table view controllers </strong>- Cria tabelas a partir de dados buscados na Internet. Suporte até para fazer reload se você balançar o iPhone. <img src='http://marcelobaltar.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li><strong>Better text fields</strong> - UITextView que aumenta de tamanho a medida que você digita e o <a href="http://github.com/joehewitt/three20/blob/master/src/Three20/TTPickerTextField.h">TTPickerTextField</a>, um campo de entrada de texto com sugestão.</li>
<li><strong>HTTP disk cache</strong> &#8211; funciona com o NSURLRequest, para fazer um request http, mas adicionando um cache.</li>
<li><strong>URL-based Navigation</strong> &#8211; faz a navegação da sua aplicação funcionar como se fosse páginas da Internet. Cada controller registra uma URL que, ao ser visitada, mostra a view associada ao controller.</li>
</ul>
<p>O código está disponível no <a href="http://github.com/joehewitt/three20/" target="_blank">github</a>, juntamente com uma aplicação de exemplo.</p>
<p>Thank you, Joe!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Xfqqtt2VBP2BmCfj9mv3g_IG4zs/0/da"><img src="http://feedads.g.doubleclick.net/~a/Xfqqtt2VBP2BmCfj9mv3g_IG4zs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Xfqqtt2VBP2BmCfj9mv3g_IG4zs/1/da"><img src="http://feedads.g.doubleclick.net/~a/Xfqqtt2VBP2BmCfj9mv3g_IG4zs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/marcelobaltar/stillcoding/~4/XdcUqqkHfe0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://marcelobaltar.com/blog/2009/03/biblioteca-open-source-para-iphone-three20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://marcelobaltar.com/blog/2009/03/biblioteca-open-source-para-iphone-three20/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.648 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-03 16:29:17 -->
