Introdução ao desenvolvimento para iOS

51
Introdução ao desenvolvimento para iOS Andrei Rosseti [email protected]

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.

Transcript of Introdução ao desenvolvimento para iOS

Introdução ao desenvolvimento para

iOS

Andrei Rosseti [email protected]

Eu ;-)

• Bacharel em SI na Univille

• CTO e CO-Founder na FACE Digital Sistemas

• Facebook/Twitter: @andreirosseti

FACE Digital

• Fundada em 2004

• Desenvolvimento Web/Mobile

• Design Gráfico

• E-Learning

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

Mundo Mobile

iPhone OS Android Windows Phone

Introdução ao Desenvolvimento

• Conjunto de ferramentas do iPhone

• Iniciando um projeto

• Estrutura de um Aplicativo de iPhone

• Objective-C

Conjunto de ferramentas do iPhone

XCodeObjetive C, GDB

Interface BuilderInterface Gráfica, integrado ao XCode

ProfilerAnálise do software Buscar vazamentos de memória (leaks)

SimuladorTestes

Iniciando um Projeto

Iniciando um projeto

Iniciando um projeto

Iniciando seu projeto

Simulador do iPhone

Depurador (gdb)

depurador

Estrutura de um Aplicativo de iPhone

Frameworks relacionados Gráficos, Som, Bluetooth & outros.

Estrutura do Aplicativo

Arquivo Executável Binário

Estrutura do Aplicativo

Arquivos de Suporte ao Projeto Configuração, Strings, Imagens e o Main.

Estrutura do Aplicativo

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

Objetive-C

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!

NSLog

Auxilia no processo de depuração.

Sintaxe:NSLog(@”Deu pau aqui”);

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

Declaração

Objetos

Interface

Implementação

.h

.m

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

Métodos e Mensagens

Mensagens

Chamando Métodos & Passando de mensagens

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]

Propriedades

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

Exemplo prático

Case - Urbe

http://www.guiaurbe.com.br/

Proximidades

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