minicurso objective-c

Post on 22-Apr-2015

4.239 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Minicurso ministrado em 18/02 na DueCappa

TRANSCRIPT

Objective-CSaulo Arruda

18/02/2012

@sauloarruda

• Co-fundador e desenvolvedor da Jera

• 12 anos fazendo software

• 6 meses fazendo iOS

• Conhecendo a linguagem Objective-C

• Explorando o framework Cocoa Touch

• Criando uma aplicação simples

• Testando no dispositivo

• Publicando na App Store

Installing Tools

Ferramentas

2. Inscrever-se como um desenvolvedor noiOS Developer Program

1. Download Xcode

Jump Right In

Hello World

Tools

Simulator e Debugger

Provisioning Profiles

Testar no dispositivo

Documentação

Profiler

Snapshots

SCM - Git

Distribuição

Language

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

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.

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

Definição de Classe

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;

Definição do método

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;

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];

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;

Blocos

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

Protocolos e Categorias

@interface HelloWorldViewController : UIViewController <UITextFieldDelegate> {

}

@end

@protocol MyProtocol

- (void)myProtocolMethod;

@end

@interface NSDate (NSDateCreation)

Basic Tasks

Frameworks

Apps are Driven by Events

Using an Object-Oriented Framework

Design Patterns

Model-View-Controller

Delegation

Protocol

Notification

Target-action

Key-Value Observer

Outros

• View hierarchy

• Responder chain

• View controller

• Receptionist

Human Interface Design

Human Interface Principles

• Integridade estética

• Consistência

• Manipulação direta

• Feedback

• Metaphors

• Controle do usuário

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

Estratégia de design

• Enumere a lista de funcionalidades

• Desenhe para o dispositivo

• Customize apropriadamente

• Prototipe e itere

App Design

App Store

Preparar para App Store

Finding Information

Where to Go from Here

Obrigado!

@sauloarrudasaulo@jera.com.br

top related