minicurso objective-c
Post on 22-Apr-2015
4.238 Views
Preview:
DESCRIPTION
TRANSCRIPT
Objective-CSaulo Arruda
18/02/2012
@sauloarruda
• Co-fundador e desenvolvedor da Jera
• 12 anos fazendo software
• 6 meses fazendo iOS
Desenvolvimento iOS
https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/Introduction/Introduction.html
• 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!
top related