Desenvolvimento de software e tecnologia em geral
Artigos com o marcador Mac
Programando para Mac e iPhone SDK
24/07/09
Pelo meu blog dá para perceber que meu foco sempre foi desenvolver aplicações para a plataforma Java, mas depois que migrei de sistema operacional passando a utilizar o Mac OS comecei a testar a ferramenta de desenvolvimento Xcode, a linguagem Objective-C e o iPhone SDK.
Como sempre encontrei quase nenhum material em portugues sobre desenvolvimento para essa plataforma, tive a idéia de criar um site para mudar esta situação e foi então que surgiu o MacDevelopers.
http://www.macdevelopers.com.br
A idéia inicial do MacDevelopers era ter somente um fórum onde as pessoas pudessem trocar informações, tirar dúvidas e etc. Mas depois acabei decidindo também que além do forum iria criar um site com conteúdo voltado exclusivamente para o desenvolvimento nessa plataforma.
O intuito desse post é justamente esse, divulgar o site e pedir a todos os interessados que participem, comentem no site e postem no forum.
Então é isso, fica ai a dica para quem tem interesse em desenvolvimento voltado para Mac e iPhone SDK, é so acessar http://www.macdevelopers.com.br
Atualizando Rails no Mac
26/04/09
Desde que comecei a utilizar o Mac OS X Lepard, utilizei muito pouco ruby e rails nele, pois tenho utilizado mais meu querido Java e aprendido um pouco de Objective-C.
Agora estou incluindo também no meu “TODO List” de coisas a aprender, aprofundar meus conhecimentos tambem em Ruby on Rails e para minha alegria tudo que precisava para desenvolver em RoR já estava instalado no meu Mac (só precisei instalar o famoso TextMate!
), porém o rails estava na versão 1.2.6.
Como eu tenho visto muito sobre as novidades da versão 2.x do rails, corri atrás de como atualizar o garoto e vi que é muito simples. A dica é abrir o terminar e digitar:
$ sudo gem update --system $ sudo gem install rails $ sudo gem update rake $ sudo gem update sqlite3-ruby
Pronto, simples assim! Com isso o rails foi atualizado para a versão 2.3.2, o rake para 0.8.4 e o sqlite para 3.4.0.
Agora é so abrir o textmate e começar a cair na real!
Brincando com Objective-C no Mac
12/04/09
Faz um certo tempo que venho querendo desenvolver algo para o iPhone, mas ultimamente tenho estado meio ocupado por inúmeros motivos, agora felizmente ja me livrei de algumas coisas que consumiam meu tempo e pude começar a brincar com a linguagem Objective-C que é utilizada para desenvolver aplicativos para o iphone, então abri o XCode e alguns pdf’s sobre Objective-C e comecei a testar a linguagem.
Nesse post irei colocar um dos exemplos que fiz, procurei comentá-lo bastante (em inglês
) para facililar o entendimento do código.
Basicamente criei uma classe Pessoa com duas variaveis de instancia (nome e data de nascimento), um metodo estático (class method) e três métodos de classe. Criei uma representação UML utilizando tipos do Java para representar a classe, pois não achei como utilizar os tipos do ObjC no argoUML.

Não vou ficar explicando para que serve exatamente cada parte do código para nao alongar muito o post.
Todo o codigo pode ser colocado em um único arquivo (algumNome.m) ou em arquivos separados @Interface ( algumNome.h) @Implementation e metodo main (algumNome.m).
Com este pequeno exemplo já pode-se entender de uma forma simples como trabalhar com classes e suas instancias, Strings, Datas e algumas definições OO em Objective-C.
Finalmente vamos ver o exemplo, vou começar pela @Interface (É diferente de uma interface Java) que especifica o que a classe People irá conter:
#import <Foundation/Foundation.h>
//Interface of the class People
@interface People : NSObject
{
//defining the instance variables as private
@private
NSString *name;
NSDate *birthDate;
}
//static method or class method
+ (void) doSomething;
//instance method
- (void) sayMyName;
- (void) sayMyAge;
- (int) calculateMyAge;
//properties (getters and setters)
@property (readwrite, copy) NSString *name;
@property (copy, readwrite) NSDate *birthDate;
@end
Agora vou mostrar como ficou a implementação da classe People (antes que alguém reclame o calculo da idade so esta sendo feito ate o nivel Mês, ou seja, nao esta utilizando o dia do aniversario, apenas ano e mes para calcular a idade):
//Implementation of the class People
@implementation People
/*
tell the compiler that it should synthesize
the setter and/or getter methods for the property
*/
@synthesize name;
@synthesize birthDate;
//implementation of the method class
+ (void) doSomething {
printf("Do something!\n");
}
//implementation of the instance method class
- (void) sayMyName {
printf("Hi, my name is %s\n", [name UTF8String] );
}
//implementation of the instance method class
- (void) sayMyAge {
NSString *myBirthDay = [birthDate descriptionWithCalendarFormat:@"%d/%m/%Y" timeZone:nil locale:nil];
printf("Hi, my birth day is %s ", [myBirthDay UTF8String]);
printf("and i have %i years", [self calculateMyAge]);
}
//implementation of the instance method class
- (int) calculateMyAge {
NSDate *currentDate = [NSDate date];
int birthYear = [[birthDate descriptionWithCalendarFormat:@"%Y" timeZone:nil locale: nil] intValue];
int birthMonth = [[birthDate descriptionWithCalendarFormat:@"%m" timeZone:nil locale:nil] intValue];
int currentYear = [[currentDate descriptionWithCalendarFormat:@"%Y" timeZone:nil locale:nil] intValue];
int currentMonth = [[currentDate descriptionWithCalendarFormat:@"%m" timeZone:nil locale:nil] intValue];
int age = currentYear - birthYear;
if (currentMonth <= birthMonth) {
age--;
}
return age;
}
@end
Pronto, já temos a classe pronta! Agora vou testá-la:
int main (int argc, const char * argv[]) {
//call class method
[People doSomething];
//create a instance of People
People *rodrigo = [[ People alloc] init];
//set the name
[rodrigo setName: @"Rodrigo Lazoti"];
//set the day of birth. Format: month/day/year
[rodrigo setBirthDate: [NSDate dateWithNaturalLanguageString:@"08/08/1981"]];
//call instance method
[rodrigo sayMyName];
//call instance method
[rodrigo sayMyAge];
//end program
return 0;
}
O resultado do código executado será:
Do something! Hi, my name is Rodrigo Lazoti. Hi, my birth day is 08/08/1981 and i have 27 years
Últimos comentários