Posted by Marcelo Baltar | Posted in biblioteca, cocoa | Posted on 19-08-2009
0
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.
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 NSPredicate faz alguma coisa, mas é ainda limitada. O jeito então é utilizarmos bibliotecas de terceiros.
Uma boa biblioteca para aplicações para o iPhone é a RegexKitLite. Ela possui um footprint 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 esta mensagem na lista de mensagens da Apple para o Xcode. Outra vantagem desde projeto é que ele possui uma excelente documentação, que pode inclusive ser incluída no Help do Xcode.
Existem outras alternativas:
Veja também o excelente artigo “8 Regular Expressions You Should Know” para alguns usos muito úteis de expressões regulares.
Posted by Marcelo Baltar | Posted in interface builder, tutorial | Posted on 12-08-2009
0
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 “virtude” ser preguiçoso. Virtude 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.
Ao tutorial:
Abra o Xcode e crie um novo projeto usando o template View Based Application. Dê um nome bem criativo ao seu projeto como, por exemplo, Teste.

Posted by Marcelo Baltar | Posted in cocoa, interface builder | Posted on 01-06-2009
1
Tem muita gente que adora criar as telas de suas aplicações “na mão”, 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 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…), 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ã.
Mas para quem prefere o estilo “mão na massa” para criar suas interfaces visuais, o Matt Campbell fez um post onde ele ensina como criar um ViewController através de código. 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 under the hoods 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.
Resumo rápido:
- No AppDelegate:applicationDidFinishLaunching você cria sua View e a adiciona à window (objeto já existente na AppDelegate – você usou os templates do Xcode, certo?).
- No ViewController: loadView você cria seus controles visuais e os adiciona à view.
Posted by Marcelo Baltar | Posted in xcode | Posted on 10-04-2009
0
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.
Posted by Marcelo Baltar | Posted in Sem categoria | Posted on 09-04-2009
0
Vou abrir um espaço no blog hoje para falar de um assunto diferente. O grande Vinicius Teles, da ImproveIt, postou um pedido para “dar uma mãozinha” 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 tabela, da galera da ImproveIt) desde 2007 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.
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.
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 Be on the Net e também o modelo de negócios que está por trás da iniciativa, principalmente se você é um empreendedor da rede.
Pra quem achar que é só propaganda, fica a dica para acompanhar o blog da ImproveIt e também o Vinicius no Twitter. Sempre tem conteúdo muito bom vindo dele!
Posted by Marcelo Baltar | Posted in xcode | Posted on 30-03-2009
1
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.
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:
@property (nonatomic, retain) NSTipoQualquer minhaPropriedade
nas suas interfaces?
Então é só criar uma macro que irá inserir o texto acima quando você digitar “@prop”, por exemplo. E colocando “placeholders” nos lugares certos (em NSTipoQualquer e minhaPropriedade), para facilitar a navegação e substituições necessárias.
O Xcode já vem com uma série de macros pré-definidas. Elas ficam no diretório /Developer/Applications/Xcode.app/Contents/PlugIns/TextMacros.xctxtmacro/Contents/Resources/. Macros criadas pelo usuário devem ser colocadas no diretório ~/Library/Application Support/Developer/Shared/Xcode/Specifications.
Para criar a macro @property acima, siga os passos:
- Crie o arquivo ObjectiveC.xctxtmacro no diretório ~/Library/Application Support/Developer/Shared/Xcode/Specifications. Você provavelmente vai precisar criar este diretório, pois ele não é criado na instalação do Xcode.
- Insira o código abaixo no seu arquivo ObjectiveC.xctxtmacro:
/**
Objective C text macro specifications
by Marcelo Baltar
*/
(
{
Identifier = objc.msb.property;
BasedOn = objc;
IsMenuItem = NO;
Name = "@property definition";
TextString = "@property (nonatomic, retain) < #datatype#> < #property#>";
CompletionPrefix = "@prop";
IncludeContexts = ( "xcode.lang.objc.interface" );
},
)
- Reinicie o Xcode (sim, essa é a parte chata: toda edição nos arquivos das macros só será reconhecida após você reiniciar o Xcode).
Posted by Marcelo Baltar | Posted in ferramenta | Posted on 25-03-2009
0
Aproveitem enquanto é tempo: LiveView é 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.

Posted by Marcelo Baltar | Posted in appstore | Posted on 25-03-2009
0
O Blog do iPhone publicou um post com uma dica de como os desenvolvedores brasileiros de jogos podem fazer para disponibilizá-los na AppStore.
Como você deve saber, a categoria Jogos não existe na AppStore nacional. E a maneira que alguns desenvolvedores encontram para “burlar” essa limitação é colocar o jogo na categoria “Entreterimento”.

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.
Mas deixo o resto da história para o Blog do iPhone contar…
Posted by Marcelo Baltar | Posted in biblioteca | Posted on 25-03-2009
0
Joe Hewitt, autor da aplicação Facebook Connect (adivinha o que ela faz?
), disponibilizou uma biblioteca de controles para o iPhone como um projeto open source, chamada Three20. (Curiosidade: o nome foi escolhido por causa da resolução da tela do iPhone, 320 pixels)
São vários controles utilizados na própria aplicação para o Facebook, bastante interessantes:
- Photo Viewer - 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.
- Message composer – Para criar mensagens de e-mail de dentro da sua aplicação.
- Web image views – Para mostrar imagens a partir de uma url.
- Internet-aware table view controllers - Cria tabelas a partir de dados buscados na Internet. Suporte até para fazer reload se você balançar o iPhone.
- Better text fields - UITextView que aumenta de tamanho a medida que você digita e o TTPickerTextField, um campo de entrada de texto com sugestão.
- HTTP disk cache – funciona com o NSURLRequest, para fazer um request http, mas adicionando um cache.
- URL-based Navigation – 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.
O código está disponível no github, juntamente com uma aplicação de exemplo.
Thank you, Joe!
Posted by Marcelo Baltar | Posted in xcode | Posted on 22-03-2009
0
De vez em quando aparece alguém reclamando que o XCode não tem suporte nativo para o Git. Eu realmente não vejo problema nenhum nisso. O git é poderoso e complexo o bastante para eu preferir controlá-lo utilizando as ferramentas da linha de comando. Ainda não vi nenhuma interface gráfica para ele que fosse interessante o suficiente para me fazer abandonar esta prática.
Se você ainda não conhece o Git (o que acho difícil), ou ainda tem bastante dúvida em como utilizá-lo da melhor maneira (se é que existe esta receita, dada a flexibilidade deste excelente SCM), sugiro uma lida nos artigos escritos pelo Akita em seu blog. Procure por “git” no search box do blog. Outra excelente fonte de informação é o site git ready.
Uma coisa importante quando for utilizar o git em seus projetos de aplicações para o iPhone é configurar adequadamente o arquivo .gitignore. Este arquivo especifica quais arquivos/diretórios deverão ser ignorados pelo controle de versão. Após algumas pesquisas na net, fiz um apanhado de algumas entradas úteis para este arquivo:
.gitignore
#ignora arquivos do xcode
build/*
*.pbxuser
*.mode1v3
*.mode2v3
*.perspective
*.perspectivev3
*~.nib/
# ignora arquivos do osx
.DS_Store
profile
Outra dica interessante é configurar também o arquivo .gitattributes.
.gitattributes
*.pbxproj -crlf -diff -merge
Isso irá fazer com que o git enxergue o arquivo de projeto como um arquivo binário. Assim o git:
- não vai tentar consertar newlines (-crlf)
- mostrá-lo nos diffs (-diff)
- não incluir o arquivo nos merges (-merge).
Para mais informações sobre este arquivo veja o man file.