57
Objective-C Saulo Arruda 18/02/2012

Minicurso Objective-C

Embed Size (px)

DESCRIPTION

Minicurso ministrado em 18/02 na DueCappa

Citation preview

Page 1: Minicurso Objective-C

Objective-CSaulo Arruda

18/02/2012

Page 2: Minicurso Objective-C

@sauloarruda

• Co-fundador e desenvolvedor da Jera

• 12 anos fazendo software

• 6 meses fazendo iOS

Page 4: Minicurso Objective-C

• Conhecendo a linguagem Objective-C

• Explorando o framework Cocoa Touch

• Criando uma aplicação simples

• Testando no dispositivo

• Publicando na App Store

Page 5: Minicurso Objective-C

Installing Tools

Page 6: Minicurso Objective-C

Ferramentas

2. Inscrever-se como um desenvolvedor noiOS Developer Program

1. Download Xcode

Page 7: Minicurso Objective-C

Jump Right In

Page 8: Minicurso Objective-C

Hello World

Page 9: Minicurso Objective-C

Tools

Page 10: Minicurso Objective-C

Simulator e Debugger

Page 11: Minicurso Objective-C

Provisioning Profiles

Page 12: Minicurso Objective-C

Testar no dispositivo

Page 13: Minicurso Objective-C

Documentação

Page 14: Minicurso Objective-C

Profiler

Page 15: Minicurso Objective-C

Snapshots

Page 16: Minicurso Objective-C

SCM - Git

Page 17: Minicurso Objective-C

Distribuição

Page 18: Minicurso Objective-C

Language

Page 19: Minicurso Objective-C

Objective-C

Page 20: Minicurso Objective-C

Extensão de ANSI C• Convensão sintática para definição de classes

• Convensão para métodos de classe e instância

• Sintaxe para chamada de método (mensagem)

• Sintaxe para declaração de propriedades

• Convensão para tipagem estática e dinâmica

• Blocos - segmentos de código encapsulados

• Extensões da linguagem como protocolos e categorias

Page 21: Minicurso Objective-C

Vantagens

• Tipagem dinâmica detemina classe em tempo de execução.

• Ligação dinâmica determina o método a ser chamado em tempo de execução.

• Carregamento dinâmico permite adicionar módulos de código em tempo de execução.

Page 22: Minicurso Objective-C

Classes e objetos

Extensão Tipo

.h Header files da definição de classes, tipos, funções e constantes.

.m Source files da implementação em Objective-C ou C

.mm Source files da imeplementação em C++ além de Objective-C e C

Page 23: Minicurso Objective-C

Definição de Classe

Page 24: Minicurso Objective-C

Implementação#import "MyClass.h" @implementation MyClass

- (id)initWithString:(NSString *)aName

{ // código vai aqui}

+ (MyClass *)myClassWithString:(NSString *)aName

{ // código vai aqui}

@end

// Static typingMyClass *myObject1;

// Dynamic typingid myObject2;

Page 25: Minicurso Objective-C

Definição do método

Page 26: Minicurso Objective-C

Envio de mensagens

[myArray insertObject:anObject atIndex:0];

[[myAppObject theArray] insertObject:[myAppObject objectToInsert] atIndex:0];

[myAppObject.theArray insertObject:myAppObject.objectToInsert atIndex:0];

myAppObject.theArray = aNewArray;

self.userName = self.textField.text;

Page 27: Minicurso Objective-C

Métodos de classe

// nil is essentially the same as NULLNSMutableArray *myArray = nil;

// Create a new array and assign it to the myArray variable.myArray = [NSMutableArray array];

Page 28: Minicurso Objective-C

Propriedades

@property (nonatomic, copy) NSString *userName;// Default is to simply assign value@property BOOL flag; // Copy the object during assignment.@property (copy) NSString *nameObject; // Declare only a getter method.@property (readonly) UIView *rootView;

@synthesize flag;@synthesize nameObject;@synthesize rootView;

@synthesize flag, nameObject, rootView;

@synthesize nameObject=_nameObject;

Page 29: Minicurso Objective-C

Blocos

int result = myBlock(4); // result is 28

Page 30: Minicurso Objective-C

Protocolos e Categorias

@interface HelloWorldViewController : UIViewController <UITextFieldDelegate> {

}

@end

@protocol MyProtocol

- (void)myProtocolMethod;

@end

@interface NSDate (NSDateCreation)

Page 31: Minicurso Objective-C

Basic Tasks

Page 32: Minicurso Objective-C
Page 33: Minicurso Objective-C

Frameworks

Page 34: Minicurso Objective-C
Page 35: Minicurso Objective-C

Apps are Driven by Events

Page 36: Minicurso Objective-C

Using an Object-Oriented Framework

Page 37: Minicurso Objective-C

Design Patterns

Page 38: Minicurso Objective-C

Model-View-Controller

Page 39: Minicurso Objective-C

Delegation

Page 40: Minicurso Objective-C

Protocol

Page 41: Minicurso Objective-C

Notification

Page 42: Minicurso Objective-C

Target-action

Page 43: Minicurso Objective-C

Key-Value Observer

Page 44: Minicurso Objective-C

Outros

• View hierarchy

• Responder chain

• View controller

• Receptionist

Page 45: Minicurso Objective-C

Human Interface Design

Page 46: Minicurso Objective-C

Human Interface Principles

• Integridade estética

• Consistência

• Manipulação direta

• Feedback

• Metaphors

• Controle do usuário

Page 47: Minicurso Objective-C

Guidelines• Focar na tarefa primária

• Fazer uso simples e óbvio

• Usar terminologia centrada ao usuário

• Fazer alvos do tamanho dos dedos

• Tirar ênfase das customizações

• Usar elementos de forma consistente

• Usar animação sutil para comunicação

• Pedir para gravar somente quando necessário

Page 48: Minicurso Objective-C

Estratégia de design

• Enumere a lista de funcionalidades

• Desenhe para o dispositivo

• Customize apropriadamente

• Prototipe e itere

Page 49: Minicurso Objective-C

App Design

Page 50: Minicurso Objective-C
Page 51: Minicurso Objective-C
Page 52: Minicurso Objective-C

App Store

Page 53: Minicurso Objective-C

Preparar para App Store

Page 54: Minicurso Objective-C

Finding Information

Page 55: Minicurso Objective-C

Where to Go from Here

Page 56: Minicurso Objective-C

Obrigado!