<?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; objective-c</title>
	<atom:link href="http://www.outofmemory.blog.br/tag/objective-c/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>iOS 4.3 beta SDK disponível para download</title>
		<link>http://www.outofmemory.blog.br/2011/01/13/ios-4-3-beta-sdk-disponivel-para-download/</link>
		<comments>http://www.outofmemory.blog.br/2011/01/13/ios-4-3-beta-sdk-disponivel-para-download/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 11:24:50 +0000</pubDate>
		<dc:creator>Alex Chiaranda</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.outofmemory.blog.br/?p=815</guid>
		<description><![CDATA[você que tem sua conta de developer lá no site da Apple já pode baixar e começar a olhar as novas funcionalidade. A mais esperada com certeza é o hotspot via WIFI. Quem ainda não desenvolve para iPhone/iPad e gostaria &#8230; <a class="more-link" href="http://www.outofmemory.blog.br/2011/01/13/ios-4-3-beta-sdk-disponivel-para-download/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>você que tem sua conta de developer lá no site da Apple já pode baixar e começar a olhar as novas funcionalidade. A mais esperada com certeza é o hotspot via WIFI.</p>
<p>Quem ainda não desenvolve para iPhone/iPad e gostaria de começar, tem um excelente Post no Blog do Iphone sobre a assunto, se quiser lêr é só <a title="Iniciando o desenvolvimento" href="http://blogdoiphone.com/2011/01/saiba-os-primeiros-passos-para-se-tornar-um-desenvolvedor-de-aplicativos-para-iphone-e-ipad/" target="_blank">clicar aqui</a>. E eu já falei aqui no blog sobre alguns conceitos básicos de Objective-C, se quiser acompanhar é só <a title="Desenvolvendo para iPhone" href="http://www.outofmemory.blog.br/category/dev/objective-c-dev/" target="_self">clicar aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofmemory.blog.br/2011/01/13/ios-4-3-beta-sdk-disponivel-para-download/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>Introdução ao Objective-C – parte 1</title>
		<link>http://www.outofmemory.blog.br/2009/10/19/introducao-ao-objective-c-parte-1/</link>
		<comments>http://www.outofmemory.blog.br/2009/10/19/introducao-ao-objective-c-parte-1/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 19:06:50 +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[MacOS]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.outofmemory.blog.br/?p=325</guid>
		<description><![CDATA[Se você pretende desenvolver para MacOS e/ou iPhone, você deve ter levado em consideração aprender a programar em Objective-C. A boa notícia (talvez não para todos) é que Objective-C é muito parecida com C/C++ e Java, o que com certeza &#8230; <a class="more-link" href="http://www.outofmemory.blog.br/2009/10/19/introducao-ao-objective-c-parte-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Se você pretende desenvolver para MacOS e/ou iPhone, você deve ter levado em consideração aprender a programar em Objective-C. A boa notícia (talvez não para todos) é que Objective-C é muito parecida com C/C++ e Java, o que com certeza agiliza o aprendizado.</p>
<p>Não é o objetivo desse artigo, contar como ou porque a linguagem surgiu, mas se quiser informações a respeito, a página do Objective-C no <a title="Objective-C" href="http://en.wikipedia.org/wiki/Objective-C" target="_blank">Wikipedia</a> é um bom lugar para começar.</p>
<p><span id="more-325"></span><br />
Vamos começar mostrando como se invoca um método. Na verdade, em Objective-C um método não é invocado, o que acontece é que você envia uma &#8220;mensagem&#8221; para um objeto,  e ele se encarrega de responder de maneira apropriada (mais sobre isso nos próximos artigos).</p>
<p>em Java:<br />
[code lang="java"]<br />
user.doSomething();<br />
user.setName(&quot;Alex&quot;);<br />
[/code]</p>
<p>em C:<br />
[code lang="c"]<br />
doSomething();<br />
setName(&quot;Alex&quot;);<br />
[/code]</p>
<p>em Objective-C:<br />
[code lang="c"]<br />
[user doSomething];<br />
[user setName:@&quot;Alex&quot;];<br />
[/code]</p>
<p>Como podem ver, apesar da sintaxe ser um pouco diferente, a chamada é bem intuitiva, a diferença é que ao invés de se chamar &#8220;objeto.metodo&#8221; (que também é suportado), usa-se a chamada entre colchetes com espaço &#8220;[objeto metodo:parametro]&#8220;.</p>
<p>Se para &#8220;enviar uma mensagem&#8221; para um objeto é um pouco diferente, associar o retorno é tão simples quanto nas outras linguagens:</p>
<p>Em &#8220;C++&#8221; seria algo assim:<br />
[code lang="c"]<br />
string name = user.getNome();<br />
[/code]</p>
<p>Em &#8220;Objective-C&#8221;:<br />
[code lang="c"]<br />
NSString *name = [NSString string];<br />
name = [user nome];<br />
[name release];<br />
[/code]</p>
<p>No exemplo acima, a string &#8220;nome&#8221; é alocada, o valor contido na proprieda &#8220;nome&#8221; do objeto &#8220;user&#8221; é associado a nossa string e então nossa string é desalocada.</p>
<p>Bom, agora que já fizemos o primeiro contato com a linguagem, no próximo artigo veremos como declarar e implementar classes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofmemory.blog.br/2009/10/19/introducao-ao-objective-c-parte-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Retomando atividade</title>
		<link>http://www.outofmemory.blog.br/2009/10/15/retomando-atividade/</link>
		<comments>http://www.outofmemory.blog.br/2009/10/15/retomando-atividade/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 21:12:58 +0000</pubDate>
		<dc:creator>Alex Chiaranda</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Filmes]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://www.outofmemory.blog.br/?p=322</guid>
		<description><![CDATA[Olá pessoal, é verdade que desde que o meu filho nasceu eu não posto nada, mas agora é hora de voltar a atividade. Estou preparando uma série de posts sobre Objective-C e iPhone, alguma coisa do Wave, agora que a &#8230; <a class="more-link" href="http://www.outofmemory.blog.br/2009/10/15/retomando-atividade/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, é verdade que desde que o meu filho nasceu eu não posto nada, mas agora é hora de voltar a atividade.</p>
<p>Estou preparando uma série de posts sobre Objective-C e iPhone, alguma coisa do Wave, agora que a versão alpha foi liberada e outros assuntos interessantes e relacionados a tecnologia, jogos e filmes.</p>
<p>Se tiver sugestões para Posts e tópicos, entre em contato.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofmemory.blog.br/2009/10/15/retomando-atividade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Posts sobre desenvolvimento para MacOS e iPhone / iPodTouch</title>
		<link>http://www.outofmemory.blog.br/2009/02/06/posts-sobre-desenvolvimento-para-macos-e-iphone-ipodtouch/</link>
		<comments>http://www.outofmemory.blog.br/2009/02/06/posts-sobre-desenvolvimento-para-macos-e-iphone-ipodtouch/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 12:40:26 +0000</pubDate>
		<dc:creator>Alex Chiaranda</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ipod touch]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.outofmemory.blog.br/?p=199</guid>
		<description><![CDATA[Nas próximas semanas, vou começar a postar sobre desenvolvimento utilizando Objective-C e framework Cocoa para MacOS e iPhone/iPod Touch. Se você tem interesse ou curiosidade sobre esses assuntos, não percam os próximos posts !!!]]></description>
			<content:encoded><![CDATA[<p>Nas próximas semanas, vou começar a postar sobre desenvolvimento utilizando Objective-C e framework Cocoa para MacOS e iPhone/iPod Touch.<br />
Se você tem interesse ou curiosidade sobre esses assuntos, não percam os próximos posts !!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.outofmemory.blog.br/2009/02/06/posts-sobre-desenvolvimento-para-macos-e-iphone-ipodtouch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

