Upload
andrei-rosseti
View
209
Download
1
Embed Size (px)
DESCRIPTION
Introdução ao desenvolvimento para iOS (sistema operacional para dispositivos móveis da Apple). Nesta apresentação você pode conferir alguns conteúdos como conjunto de ferramentas para desenvolvimento, como iniciar um projeto, a estrutura de um aplicativo e a linguagem de desenvolvimento.
Citation preview
Eu ;-)
• Bacharel em SI na Univille
• CTO e CO-Founder na FACE Digital Sistemas
• Facebook/Twitter: @andreirosseti
Tópicos
• Estatísticas da Apple App Store
• Mundo Mobile
• Introdução ao Desenvolvimento
• Exemplo Prático
• Case FACE Digital
App Store Stats
Setembro, 2009 Setembro, 2010 Outubro, 2011 Novembro, 2012
3mil+ 250 mil+ 500mil+ 1milhão+
Aplicativos
Setembro, 2009 Setembro, 2010 Outubro, 2011 Junho, 20121,8 bilhão 6,5 bilhões 18 bilhões 40 bilhões
Downloads
http://www.apple.com/pr/library/2008/07/10iPhone-3G-on-Sale-Tomorrow.html http://www.apple.com/pr/library/2009/09/28Apples-App-Store-Downloads-Top-Two-Billion.html
http://www.youtube.com/watch?v=-WIKvtI2Zuw http://events.apple.com.edgesuite.net/11piuhbvdlbkvoih10/event/index.html
http://idgnow.uol.com.br/mobilidade/2012/11/21/apple-ja-aprovou-mais-de-1-milhao-de-aplicativos-para-ios/ http://www.apple.com/pr/library/2013/01/07App-Store-Tops-40-Billion-Downloads-with-Almost-Half-in-2012.html
Fontes
Introdução ao Desenvolvimento
• Conjunto de ferramentas do iPhone
• Iniciando um projeto
• Estrutura de um Aplicativo de iPhone
• Objective-C
XCodeObjetive C, GDB
Interface BuilderInterface Gráfica, integrado ao XCode
ProfilerAnálise do software Buscar vazamentos de memória (leaks)
SimuladorTestes
Código do seu Aplicativo Classes de Objetos e Storyboard
As pastas (folders) são chamados de grupos. Esses grupos são abstrações para ajudar a organizar seu projeto, elas não existem no sistema de arquivos.
Reorganize como quiser!
Estrutura do Aplicativo
HistóriaSimula 67
1967
C++
1983
C
1971
Objective-C
1983
Smalltalk-80
1983
Perl
1987
Java
1995
Ruby
1993
Objective-C 2.0
2006
Pytho
1991
http://www.levenez.com/lang/Fonte:
Objective-C
• Tipos primitivos & Strings
• Objetos, Mensagens e Propriedades
• Gerenciamento de Memória
Tipos primitivosOs tipos mais comuns são:
int, float, ...possui próprio tipo booleano
(obj-c implementou antes do que o C99)
BOOL os valores são YES=1 e NO=0
Alguns outros tipos especiais
SEL, id, Class, IMPnil é utilizado ao invés de NULL
Implementação
[myButton addTarget:self action:@selector(myButtonWasPressed) forControlEvents:UIControlEventTouchUpInside]; !- (void)myButtonWasPressed { // Do something about it }
Seletores
Stringssempre utilize (NSString *) ao invés das Strings do C, a
menos que você saiba o que está fazendo.
inline@”Este é um exemplo de uma String inline”;
atribuídoNSString *str = @”Esta é uma variável atribuída”;
Se você acidentalmente esquecer do @, pode esperar um crash!
Prefixo NS? WTF
• NSString
• NSNumber
• NSLog
• NSException
NS é herdado de uma API do NextStep. NexT foi uma empresa fundada por Jobs após a saída em 1985. NextStep foi um sistema operacional (Unix based) juntamente com ObjC.
Objective-C
• Tipos primitivos & Strings
• Objetos, Mensagens e Propriedades
• Gerenciamento de Memória
Objetos Todo objeto é do tipo
idPonteiro para os dados da instância do Objeto:
id minhaInstancia;
Você pode declarar um tipo mais específico:MyClass *minhaInstancia;
Sintaxe ObjC vs Java
MyClass *minhaInstancia = [[MyClass alloc] init]; ou id minhaInstancia = [[MyClass alloc] init];
Objective C
MyClass minhaInstancia = new MyClass();
Java
Mensagens
Sem argumentos
[objeto mensagem];
Com 1 argumento
[objeto mensagem:valor];
Com 2 argumentos
[objeto mensagem:valor arg2:valor];
Mensagens
Sem argumentos
[Pessoa init];
Com 1 argumento
[Pessoa initWithFirst:@”Andrei”];
Com 2 argumentos
[Pessoa initWithFirstAndLast:@”Andrei” last:@”Rosseti”];
Você pode enviar mensagens para os Objetos
[Pessoa alloc];
Também pode aninhar mensagensPessoa *p = [[Pessoa alloc] initWithName:@”Andrei”;
Pessoa *p = [Pessoa alloc];[p initWithName:@”Andrei”];
Definindo Métodos
Chamando um método:[Pessoa initWithFirstAndLast:@”Andrei” last:@”Rosseti”];
Definindo um método:
- (id)initWithFirstAndLast:(NSString*)firstName last:(NSString*)lastName;
A convenção do init
+(id) alloc; Aloca memória e retorna um ponteiro
-(id) init; Inicializa o novo objeto alocado.
[[Pessoa alloc] init]
Escrever getters e setters na mão é chato d+
Propriedades
As propriedades são macros que o compilador interpreta para gerar automaticamente os getters e setters.
Propriedades
@property (nonatomic, copy) NSString *firstName;
Interface
@synthetize firstName, lastName;
Implementation
Propriedades
Atributos da Propriedade
@property (atributos) tipo nome;
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html
fonte
Capacidade de Escritareadwrite (padrão)
Atomicidade
readonlynonatomic(não há atributo “atomic”, mas ele é o padrão).Semântica Setter
assign (padrão)retaincopy
atribuídopreserva
Suporte Multi Thread*Melhor performance
* Multi Thread é uma característica que permite repartir a utilização do processador entre várias tarefas simultaneamente.
Objective-C
• Tipos primitivos & Strings
• Objetos, Mensagens e Propriedades
• Gerenciamento de Memória
Idéia básica
Você precisa ajudar o Garbage Collector a saber quando é permitido limpar um objeto
ObjC já realiza isso com uma técnica semelhante à contagem de referência. (ARC - Automatic Reference Counting)
Gerenciamento de Memória
Ciclo de vida de um Objeto
+ alloc - init - retain - release - release
Cria Objeto Inicializa Libera do uso
Libera do usoPreserva para o uso
Gerenciamento de Memória
Ciclo de vida de um Objeto
1
+ alloc - init - retain - release - release
Cria Objeto Inicializa Libera do uso
Libera do usoPreserva para o uso
1 2 1 0
+1 +1 -1 -1
Referências
• Cocoa Developer Central http://cocoadevcentral.com/d/learn_objectivec/
• BYU’s CocoaHeads Chapterhttp://cocoaheads.byu.edu/resources
• The Objective-C Programming Languagehttp://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf