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

<channel>
	<title>Out of Memory &#187; xcode</title>
	<atom:link href="http://www.outofmemory.blog.br/tag/xcode/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.outofmemory.blog.br</link>
	<description>Blog sobre Tecnologia, desenvolvimento e games !!!</description>
	<lastBuildDate>Thu, 13 Oct 2011 13:25:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Introdução ao Objective-C &#8211; Synthesized Accessor</title>
		<link>http://www.outofmemory.blog.br/2010/04/29/introducao-ao-objective-c-synthesized-accessor/</link>
		<comments>http://www.outofmemory.blog.br/2010/04/29/introducao-ao-objective-c-synthesized-accessor/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 03:03:02 +0000</pubDate>
		<dc:creator>Alex Chiaranda</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[accessor]]></category>
		<category><![CDATA[getter]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[memória]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[setter]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://www.outofmemory.blog.br/?p=396</guid>
		<description><![CDATA[Quem programa utilizando Orientação a Objetos sabe bem a importância de criar os atributos de uma classe como private e criar os &#8220;Accessors&#8221; para alterar ou recuperar os valores desses atributos; o Objective-C 2.0 disponibiliza uma maneira muito simples e &#8230; <a class="more-link" href="http://www.outofmemory.blog.br/2010/04/29/introducao-ao-objective-c-synthesized-accessor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Quem programa utilizando Orientação a Objetos sabe bem a importância de criar os atributos de uma classe como private e criar os &#8220;<strong>Accessors</strong>&#8221; para alterar ou recuperar os valores desses atributos; o Objective-C 2.0 disponibiliza uma maneira muito simples e prática para isso, os &#8220;<strong>Synthesized Accessor Methods</strong>&#8220;.<br />
<span id="more-396"></span><br />
Quando estamos falando de mobile devices (iPhone/iPad) deve-se levar em conta o consumo de memória, e pensando nisso um bom accessor para um atributo <strong>nome</strong> seria mais ou menos assim:</p>
<p>[code lang="c"]<br />
- (void) setNome: (NSString *) _nome<br />
{<br />
[nome release];<br />
nome = [[NSString alloc] initWithString: _nome];<br />
}</p>
<p>- (NSString *) nome<br />
{<br />
return nome;<br />
}<br />
[/code]</p>
<p>antes de fazer o set do novo valor, o valor antigo é liberado da memória evitando &#8220;<strong>vazamentos</strong>&#8221; indesejáveis.</p>
<p>Para que o compilador realize essa tarefa, nos poupando muito trabalho, primeiro você declara o atributo utilizando a diretiva &#8220;<strong>@property</strong>&#8221; na sua interface, e depois na implementação da classe utilizar a diretiva &#8220;<strong>@synthesize</strong>&#8220;. Desse modo o compilador vai gerar automaticamente o &#8220;<strong>getter</strong>&#8221; e o &#8220;<strong>setter</strong>&#8221; do seu atributo.</p>
<p>Nada melhor que um exemplo, vamos começar com a interface &#8220;MyClass1.h&#8221;:</p>
<p>[code lang="c"]<br />
#import  &lt;Foundation/Foundation.h&gt;</p>
<p>@interface MyClass1 : NSObject<br />
{<br />
int aInt;<br />
NSString *nome;<br />
}</p>
<p>@property int aInt;<br />
@property (copy, nonatomic) NSString *nome;</p>
<p>@end<br />
[/code]</p>
<p>a diretiva &#8220;<strong>@property</strong>&#8221; aceita alguns parâmentros para informar ao compilador como criar o &#8220;<strong>Accessor</strong>&#8220;, no nosso caso queremos que seja feita uma cópia no setter do atributo (como no exemplo acima), então usamos o parâmetro &#8220;<strong>copy</strong>&#8220;, e ainda o &#8220;<strong>nonatomic</strong>&#8221; pois não queremos que o getter faça um &#8220;<strong>retain</strong>&#8221; ou um &#8220;<strong>autorelease</strong>&#8221; antes que ele retorne o valor do atributo (mais sobre o &#8220;<strong>retain</strong>&#8221; e o &#8220;<strong>autorelease</strong>&#8221; nos próximos artigos).</p>
<p>agora o &#8220;MyClass1.m&#8221;:</p>
<p>[code lang="c"]<br />
#import "MyClass1.h"</p>
<p>@implementation MyClass1</p>
<p>@synthesize aInt;<br />
@synthesize nome;</p>
<p>@end<br />
[/code]</p>
<p>não está faltando código, é só isso mesmo.</p>
<p>e finalmente um programa que faz a chamada:</p>
<p>[code lang="c"]<br />
#import &lt;Foundation/Foundation.h&gt;<br />
#import "MyClass1.h"</p>
<p>int main (int argc, const char * argv[])<br />
{<br />
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];</p>
<p>MyClass1 * m = [[MyClass1 alloc] init];</p>
<p>[m setAInt: 5];<br />
NSLog(@"Valor eh: %i", [m aInt]);</p>
<p>[m setNome: @"Alex"];<br />
NSLog(@"Nome eh: %s", [[m nome] UTF8String]);</p>
<p>[m release];<br />
[pool drain];<br />
return 0;<br />
}</p>
<p>[/code]</p>
<p>você deve ter notado, que nas chamadas eu utilizei &#8220;<strong>setAInt</strong>&#8221; e &#8220;<strong>setNome</strong>&#8221; para setar os valores e &#8220;<strong>aInt</strong>&#8221; e &#8220;<strong>nome</strong>&#8221; para recuperar os valores, o &#8220;<strong>@synthesize</strong>&#8221; criou esses métodos na hora da compilação, mas se você utiliza o XCode, ficará surpreso em saber que ele oferece no auto-complete esses métodos.</p>
<p>após compilar e rodar a saída que obtive foi essa:</p>
<p>[code]<br />
2010-04-28 23:24:13.552 acessor[1217:a0f] Valor eh: 5<br />
2010-04-28 23:24:13.554 acessor[1217:a0f] Nome eh: Alex<br />
[/code]</p>
<p>Até o próximo artigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofmemory.blog.br/2010/04/29/introducao-ao-objective-c-synthesized-accessor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introdução ao Objective-C – parte 2 (classes)</title>
		<link>http://www.outofmemory.blog.br/2010/01/05/introducao-ao-objective-c-parte-2-classes/</link>
		<comments>http://www.outofmemory.blog.br/2010/01/05/introducao-ao-objective-c-parte-2-classes/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 00:06:09 +0000</pubDate>
		<dc:creator>Alex Chiaranda</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://www.outofmemory.blog.br/?p=359</guid>
		<description><![CDATA[Agora que você já teve o primeiro contato com a linguagem (no post anterior), vamos ver como declarar classes, métodos e propriedades. Em Objective-C usa-se a seguinte nomenclatura para os arquivos: arquivo.h &#8211; header arquivo.m &#8211; arquivo que pode conter &#8230; <a class="more-link" href="http://www.outofmemory.blog.br/2010/01/05/introducao-ao-objective-c-parte-2-classes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Agora que você já teve o primeiro contato com a linguagem (<a href="http://www.outofmemory.blog.br/2009/10/19/introducao-ao-objective-c-parte-1/" target="_blank">no post anterior</a>), vamos ver como declarar classes, métodos e propriedades.</p>
<p>Em Objective-C usa-se a seguinte nomenclatura para os arquivos:</p>
<ul>
<li>arquivo.h &#8211; header</li>
<li>arquivo.m &#8211; arquivo que pode conter tanto código Objective-C como C</li>
</ul>
<p>Para esse tutorial eu usarei o XCode (falarei mais sobre ele depois), mas qualquer editor de texto serve para editar os arquivos, e o GCC cria os executáveis. Neste código específico, usarei o &#8220;<strong>vi</strong>&#8221; e o compilador &#8220;<strong>gcc</strong>&#8221; apenas para exemplificar como proceder neste caso.</p>
<p><span id="more-359"></span>Vamos agora para a nossa primeira classe, vou chama-la de &#8220;MyFirstClass.m&#8221;, para este exemplo, vou digitar todo o código no mesmo arquivo:</p>
<p>[code lang="c"]<br />
#import &lt;Foundation/Foundation.h&gt;</p>
<p>@interface MyFirstClass : NSObject<br />
{<br />
   int aInt;<br />
}</p>
<p>-(int) aInt;<br />
-(void) setAInt: (int) _aInt;</p>
<p>-(void) print;</p>
<p>@end</p>
<p>@implementation MyFirstClass<br />
-(void) print<br />
{<br />
   NSLog(@&quot;Número informado é: %i&quot;, aInt);<br />
}</p>
<p>-(void) setAInt: (int) _aInt<br />
{<br />
   aInt = _aInt;<br />
}</p>
<p>-(int) aInt<br />
{<br />
   return aInt;<br />
}<br />
@end</p>
<p>int main(int argc, const char *argv[])<br />
{<br />
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];<br />
   MyFirstClass *m = [[MyFirstClass alloc] init];</p>
<p>   [m setAInt: 5];<br />
   [m print];</p>
<p>   [m release];<br />
   [pool drain];</p>
<p>   return ( 0 );<br />
}<br />
[/code]</p>
<p>Para compilar um programa usando o GCC em qualquer plataforma suportada, basta digitar o seguinte:</p>
<p>[code lang="c"]gcc -framework Foundation MyFirstClass.m -o MyFirstClass[/code]</p>
<p>se não houve nenhum erro o executável &#8220;MyFirstClass&#8221; será criado, e quando executado exibirá a seguinte saída:</p>
<p>[code]<br />
Alex-Chiarandas-MacBook-Pro:trainning aechiara$ ./MyFirstClass<br />
2010-01-05 22:02:15.169 MyFirstClass[380:903] Número informado é: 5<br />
Alex-Chiarandas-MacBook-Pro:trainning aechiara$<br />
[/code]</p>
<p>Divirta-se alterando o código para exibir outras mensagens ou realizar somas por exemplo. O NSLog se comporta como o &#8220;printf&#8221; do C.</p>
<p>Até o próximo artigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofmemory.blog.br/2010/01/05/introducao-ao-objective-c-parte-2-classes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Desenvolvendo aplicativos para iPhone, preparando o ambiente</title>
		<link>http://www.outofmemory.blog.br/2009/04/13/desenvolvendo-aplicativos-para-iphone-preparando-o-ambiente/</link>
		<comments>http://www.outofmemory.blog.br/2009/04/13/desenvolvendo-aplicativos-para-iphone-preparando-o-ambiente/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 15:22:59 +0000</pubDate>
		<dc:creator>Alex Chiaranda</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[aplicativos]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[Connections]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[ipod touch]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://www.outofmemory.blog.br/?p=289</guid>
		<description><![CDATA[No artigo que publiquei anteriormente aqui fiz uma breve introdução ao iPhone e iPod Touch e como eles chegaram trazendo todo um novo mundo de possibilidades para desenvolvedores e usuários. No momento em que estava escrevendo este artigo a Apple &#8230; <a class="more-link" href="http://www.outofmemory.blog.br/2009/04/13/desenvolvendo-aplicativos-para-iphone-preparando-o-ambiente/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>No artigo que publiquei anteriormente <a title="Desenvolvendo aplicativos para iPhone" href="http://www.outofmemory.blog.br/2009/04/06/desenvolvendo-aplicativos-para-iphone/" target="_blank">aqui</a> fiz uma breve introdução ao iPhone e iPod Touch e como eles chegaram trazendo todo um novo mundo de possibilidades para desenvolvedores e usuários. No momento em que estava escrevendo este artigo a Apple anunciava a versão 3.0 do firmware para iPhone (overview <a title="Overview novo firmware da Apple" href="http://www.apple.com/iphone/preview-iphone-os/" target="_blank">aqui</a>) que traz algumas novidades interessantes para os usuários, dentre elas:</p>
<blockquote>
<ul>
<li>Search your iPhone</li>
<li>Cut, copy, and paste</li>
<li>Send photos, contacts, audio files, and location via MMS (iPhone 3G only)</li>
<li>Read and compose e-mail and text messages in landscape</li>
</ul>
</blockquote>
<p>Para os desenvolvedores, algumas features novas também se destacam, entre elas:</p>
<blockquote>
<ul>
<li>in-app purchases — like subscriptions, additional game levels, and new content.</li>
<li>They can also create apps that connect peer to peer via Bluetooth, communicate with hardware accessories</li>
<li>use the Apple Push Notification service to provide alerts.</li>
</ul>
<p>Falarei dessas features com mais detalhes mais tarde.</p></blockquote>
<p>Pois bem, agora você está empolgado, e gostaria de fazer o seu primeiro software para iPhone, e está se perguntando por onde começar. Abaixo eu listo os passos básicos que você deve seguir para iniciar seu desenvolvimento:</p>
<ol>
<li>se você ainda não possui um iPhone/iPod Touch, eu (e a Apple) recomendamos que você se prepare para adquirir um. O emulador é bem fiel ao device, mas todo o software deve ser testado no aparelho antes de submetido à Apple para aprovação;</li>
<li>se ainda não possuir, compre um Apple Intel Based, não pode ser os da linha PowerPC; (read me do SDK <a title="Readme SDK iPhone" href="http://developer.apple.com/iphone/download.action?path=/iphone/iphone_sdk_for_iphone_os_2.2.1__9m2621a__final/iphone_sdk_for_iphone_os_2.2.1readmefinal.pdf" target="_self">aqui</a>, precisa ser cadastrado para visualizar o arquivo)</li>
<li>vá até o iPhone Developer Center da Apple (clicando <a title="iPhone Developer Center" href="http://developer.apple.com/iphone/" target="_blank">aqui</a>) e cadastre-se. Isso já dará acesso ao download do XCode (IDE para desenvolvimento) e à vários vídeos e exemplos de código. Se você chegou até aqui, já consegue fazer e testar seus aplicativos com o XCode, mas se quer vender suas aplicações, precisa seguir adiante;</li>
<li>agora você precisa pagar a taxa (anual) de 99 obamas (U$ 99.00) para a Apple, esse valor é cobrado para que você faça parte do &#8220;<strong>iPhone Developer Program&#8221;</strong> e possa publicar suas aplicações (se aprovadas pela Apple) na AppStore. Após realizar este processo, você receberá um email da Apple, parabenizando você por fazer parte do &#8220;iPhone Developer Program&#8221;, e sua chave para ativação. Se sua aplicação será usada em vários aparelhos em uma empresa, existe outro tipo de assinatura chamada &#8220;<strong>Enterprise</strong>&#8221; e o valor é de 299 obamas (U$ 299.00) que além do que é oferecido pela versão &#8220;single developer&#8221; ainda disponibiliza uma nova feature para o iTunes conseguir fazer deploy da aplicação nos vários aparelhos da sua empresa.</li>
</ol>
<p>Feito isso, é só pegar o livro de Objective C, ler os tutoriais do site da Apple e fazer a sua aplicação. No próximo posts, veremos o XCode e como fazer um Hello World !!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofmemory.blog.br/2009/04/13/desenvolvendo-aplicativos-para-iphone-preparando-o-ambiente/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

