SlideShare une entreprise Scribd logo
1  sur  25
Treinamento iOS
Agenda
- Manhã (parte 1): Introdução aos conceitos
básicos da plataforma e da linguagem
Objective-C.
- Manhã (parte 2): Dojo com objective-c para
pegar as manhas ;)
- Tarde: Hands On!
Conceitos Básicos: Cocoa Touch
- “The Cocoa Touch frameworks
that drive iOS apps share many
proven patterns found on the Mac,
but were built with a special focus
on touch-based interfaces and
optimization. “ Redator da Apple
Cocoa Touch - Principais APIs
- Foundation.framework
- UIKit.framework
- MapKit.framework
Cocoa Touch - Foundation.framework
- Base da linguagem(Swift e Obj-C).
- Onde fica os tipos primitivos, tipos de
classe, estruturas, coleções… você
entendeu.
- Foi projetado para ser pequeno, pensando
em portabilidade e facilitar o
desenvolvimento através de convenções
pré-definidas.
Cocoa Touch - UiKit.framework
- Framework com tudo que você vai usar no
dia a dia.
- Sério, tudo mesmo!
Cocoa Touch - MapKit.framework
- Cuida apenas de assuntos relacionados a
mapas (como o nome indica).
- Desde colocar um mapa dentro da sua view
como fazer reverse-coding pra determinar
um endereço
Conceitos Básicos: iOS Design
Patterns
- MVC-Centric.
- Target-Action.
- Delegation.
Conceitos Básicos: Objective C
- “Objective-C is the primary programming
language you use when writing software for
OS X and iOS. It’s a superset of the C
programming language and provides object-
oriented capabilities and a dynamic runtime.
”
Objective C - Syntax
NSString *name = @"Pedro Souza";
CGRect windowFrame = window.frame;
NSLog(@"Olá %@", name);
[Classe chamandoMetodoEstatico:param1
nomeDoProximoParam:param2];
[name chamandoMetodoDeInstancia];
Objective C - Classes
// MyClass.h
#import <Foundation/Foundation.h>
#import SomeType.h
@interface CardapioAlimento :
NSObject<AnyProtocol>
@property (strong, nonatomic) NSString *obj;
@property (weak) CGRect frame;
@property (retain, atomic) SomeType *obj2;
- (void) metodo:(NSString *)param1;
@end
// MyClass.m
#import MyClass.h
@implementation MyClass
// your shit goes here
@end
Objective C - Classes
- Lista com todos os tipos pro @property
- atomic
- nonatomic
- retain
- copy
- readonly
- readwrite
- assign
- strong
Objective C - Protocol
- Protocols servem para definir
comportamentos esperados por um objeto.
(ou seja, uma interface).
- Você pode definir métodos e propriedades
que, aqueles que implementarem o protocol,
iram incorporar. Eles podem ser obrigatórios
ou não.
@interface Cachorro : NSObject<Animal>
@end
@implementation Cachorro
- (void)beberAgua {
// your code
}
@end
Objective C - Protocol
@protocol Animal
- (void)beberAgua;
@optional
- (void)comerCarne;
- (void)comerPlantas;
@required
- (void)irAoBanheiro;
@end
- São responsáveis por definir métodos de
extensão a tipos já definidos.
- Essencialmente, é uma classe que adiciona
novos comportamentos a outras classes.
Objective C - Categories
- Uso
#import NSString+MVUtils;
[[NSDate now].stringValue
dateFromFormat:@"FORMAT"];
Objective C - Categories
- Definição
@interface NSString (MVUtils)
- (NSDate *)dateFromFormat:(NSString
*)format;
@end
@implementation NSString (MVUtils)
@end
Objective C - Dynamic Runtime
- ID type
- Distributed Objects
- Dynamic setters/getters
- Key-Value observing
Conceitos Básicos - Storyboard
- No iOS 6, foi apresentado o conceito de
Storyboard.
- Dentro dele, você pode ter Scenes.
- Você pode definir a navegação entre essas
cenas utilizando o conceito de Segue.
- Você pode customizar as transições criando
seus próprios segues.
Storyboard - Exemplo
Conceitos Básicos: iOS Lifecycle
Conceitos Básicos: Core Data
- CoreData é o framework responsável pela
persistência dos dados.
- Possui uma API para mapear objetos,
persistir os dados e trabalha com diversos
contextos
Core Data: Estrutura
Perguntas ?
DOJO TIME

Contenu connexe

Similaire à Treinamento iOS Fundamentos

Similaire à Treinamento iOS Fundamentos (20)

C# básica
C#   básicaC#   básica
C# básica
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
Desenvolvendo aplicativos para iOS 6 - Campus Party 2013
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Java 01
Java 01Java 01
Java 01
 
Cenário Apple
Cenário AppleCenário Apple
Cenário Apple
 
Minicurso Objective-C
Minicurso Objective-CMinicurso Objective-C
Minicurso Objective-C
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de Programacao
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
java
javajava
java
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Java 02
Java 02Java 02
Java 02
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NET
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
C sharp lesson1
C sharp lesson1C sharp lesson1
C sharp lesson1
 
Java1
Java1Java1
Java1
 
Minicurso Java
Minicurso JavaMinicurso Java
Minicurso Java
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 

Treinamento iOS Fundamentos

  • 2. Agenda - Manhã (parte 1): Introdução aos conceitos básicos da plataforma e da linguagem Objective-C. - Manhã (parte 2): Dojo com objective-c para pegar as manhas ;) - Tarde: Hands On!
  • 3. Conceitos Básicos: Cocoa Touch - “The Cocoa Touch frameworks that drive iOS apps share many proven patterns found on the Mac, but were built with a special focus on touch-based interfaces and optimization. “ Redator da Apple
  • 4. Cocoa Touch - Principais APIs - Foundation.framework - UIKit.framework - MapKit.framework
  • 5. Cocoa Touch - Foundation.framework - Base da linguagem(Swift e Obj-C). - Onde fica os tipos primitivos, tipos de classe, estruturas, coleções… você entendeu. - Foi projetado para ser pequeno, pensando em portabilidade e facilitar o desenvolvimento através de convenções pré-definidas.
  • 6. Cocoa Touch - UiKit.framework - Framework com tudo que você vai usar no dia a dia. - Sério, tudo mesmo!
  • 7. Cocoa Touch - MapKit.framework - Cuida apenas de assuntos relacionados a mapas (como o nome indica). - Desde colocar um mapa dentro da sua view como fazer reverse-coding pra determinar um endereço
  • 8. Conceitos Básicos: iOS Design Patterns - MVC-Centric. - Target-Action. - Delegation.
  • 9. Conceitos Básicos: Objective C - “Objective-C is the primary programming language you use when writing software for OS X and iOS. It’s a superset of the C programming language and provides object- oriented capabilities and a dynamic runtime. ”
  • 10. Objective C - Syntax NSString *name = @"Pedro Souza"; CGRect windowFrame = window.frame; NSLog(@"Olá %@", name); [Classe chamandoMetodoEstatico:param1 nomeDoProximoParam:param2]; [name chamandoMetodoDeInstancia];
  • 11. Objective C - Classes // MyClass.h #import <Foundation/Foundation.h> #import SomeType.h @interface CardapioAlimento : NSObject<AnyProtocol> @property (strong, nonatomic) NSString *obj; @property (weak) CGRect frame; @property (retain, atomic) SomeType *obj2; - (void) metodo:(NSString *)param1; @end // MyClass.m #import MyClass.h @implementation MyClass // your shit goes here @end
  • 12. Objective C - Classes - Lista com todos os tipos pro @property - atomic - nonatomic - retain - copy - readonly - readwrite - assign - strong
  • 13. Objective C - Protocol - Protocols servem para definir comportamentos esperados por um objeto. (ou seja, uma interface). - Você pode definir métodos e propriedades que, aqueles que implementarem o protocol, iram incorporar. Eles podem ser obrigatórios ou não.
  • 14. @interface Cachorro : NSObject<Animal> @end @implementation Cachorro - (void)beberAgua { // your code } @end Objective C - Protocol @protocol Animal - (void)beberAgua; @optional - (void)comerCarne; - (void)comerPlantas; @required - (void)irAoBanheiro; @end
  • 15. - São responsáveis por definir métodos de extensão a tipos já definidos. - Essencialmente, é uma classe que adiciona novos comportamentos a outras classes. Objective C - Categories
  • 16. - Uso #import NSString+MVUtils; [[NSDate now].stringValue dateFromFormat:@"FORMAT"]; Objective C - Categories - Definição @interface NSString (MVUtils) - (NSDate *)dateFromFormat:(NSString *)format; @end @implementation NSString (MVUtils) @end
  • 17. Objective C - Dynamic Runtime - ID type - Distributed Objects - Dynamic setters/getters - Key-Value observing
  • 18. Conceitos Básicos - Storyboard - No iOS 6, foi apresentado o conceito de Storyboard. - Dentro dele, você pode ter Scenes. - Você pode definir a navegação entre essas cenas utilizando o conceito de Segue. - Você pode customizar as transições criando seus próprios segues.
  • 21. Conceitos Básicos: Core Data - CoreData é o framework responsável pela persistência dos dados. - Possui uma API para mapear objetos, persistir os dados e trabalha com diversos contextos
  • 23.

Notes de l'éditeur

  1. Hot links http://rypress.com/tutorials/objective-c/
  2. Não vou alongar e falar sobre iOS, Apple, Mac e blablaba pq isso todo mundo aqui já conhece. Mas eu quero falar de alguns conceitos básicos relacionados ao desenvolvimento pra plataforma iOS. Eu considero importante, pelo menos, saber que isso existe. O CocoaTouch é um framework que permite a manipulação dos recursos do celular, através de APIs criadas pela apple. Em comparação, é muito similar ao .Net Framework, um framework de ferramentas que você usa para desenvolver suas aplicações. O CocoaTouch deriva do Cocoa, que é a API pra Mac. Muitas das APIs que tem no Cocoa (Como o Foundation.Kit), também tem dentro do CococaTouch.
  3. Eu considero que esses sejam os principais frameworks que existem dentro do Cocoa Touch. Vou falar um pouco mais sobre cada um deles começando...
  4. Como o nome já indica, o Foundation é a base da linguagem. Lá que se vai achar tudo, Todos tipos primitivos, estruturas, coleções, tipos de classe e algumas coisas a mais, como classes pra acesso as portas de comunicação.
  5. Esse framework é, basicamente, todo a API de desenvolvimento que você vai acessar. Nele tem controle de interface, controle e indentificação de toques, processamento gráfico das telas, gerar pdf, integração com outros apps... abrir link : https://developer.apple.com/library/ios/documentation/Uikit/reference/UIKit_Framework/index.html
  6. Bom, esse aqui é bem simples, mas acho que deve ser um dos recursos mais usados hoje em dia nos apps. Como o nome indica, esse é framework responsável por mapas no iOS. Fazer marcações, determinar rotas, Encontrar endereços, enfim, TUDO. (veja se querem perguntar alguma coisa)
  7. O desenvolvimento com iOS foi modelado para ser MVC, e funciona (ou deveria) exatamente do jeito que você sabe. Ele também tem outros paradigmas dentro deles, como o Target Action. O target-action é um conceito em que, basicamente, um objeto enviando uma msg para o outro. No iOS, por exemplo, os eventos de interface são definidos através desse pattern (citar exemplo touch up - button). Delegation pra quem não sabe, é quando um objeto agi através, ou em conjunto, com outro objeto. Um bom exemplo, é a classe UITableView (http://www.codigator.com/wp-content/uploads/2013/05/15.jpg).
  8. mostrar (http://tryobjectivec.codeschool.com/) Objective C é a linguagem xuxuzinho da apple. Com ela você pode desenvolver tantos apps pra OS X quanto pra iOS. Ela é orientada a objetos, fortemente tipada, criada na crista do C e tem um runtime dinâmico que permite a gente fazer algumas coisinhas bem legais Além disso, o Objective-C conta com umas features muito bacanas, como por exemplo blocos (rubista pira!).
  9. Declaração de variável Quando vamos usar uma instância de uma classe, ou seja, um objeto, devemos criar uma variavel de ponteiro. Quando vamos usar um tipo primitivo ou uma estrutura, não é necessário criar como ponteiro, o próprio objc já consegue gerenciar sozinho. Estamos chamando um Macro (NSLog), vou explicar o que é mais pra frente, mas é como se fosse uma função stand-alone.
  10. Toda vez que você cria uma classe em objective C, você vai ter dois arquivos: Header (.h) Basicamente, é onde você define a estrutura da sua classe. Funciona exatamente como uma interface, define toda a estrutura da sua classe dentro dele. Toda classe deve herdar, ao menos, de NSObject. A notação <>, serve para definir os procols que a classe vai implementar (veremos sobre protocol mais a frente). Implementation (.m) Como o nome diz, ele é que vai ter a implementação da estrutura que você definiu no arquivo de header. Explicar os tipos de properties que podem ser criadas Atomic - Você diz que a propriedade é Thread-Safe, ou seja, somente uma thread, por vez, tem controle desse objeto. (Não pode ser compartilhado) NonAtomic - Exatamente o oposto do atomic, você declara que a propriedade não é thread safe e pode ser alterada e acessada por diferentes threads, por esse motivo ela vira simplesmente um get,set. Por causa disso, o acesso e uso de propriedades nonatomic é mais rápido. Strong/Retain - Necessário quando o objeto é um ponteiro. O método de setter vai incrementar o contador de ponteiros, que vai liberar o espaço no pool de memória para armazenar o objeto. Só vai sair da memória se for explicitamente dealocado (hoje não mais com o ARC lol). Weak - Vai manter o valor até que a instância da classe seja dealocada.
  11. Link do Quora explicando direitinho um por um: http://www.quora.com/What-is-the-difference-between-strong-retain-nonatomic-etc-in-objective-C-iOS-property
  12. A ideia é passar por cima dos conceitos do Dynamic Runtime mais legais, e como você faz pra tirar proveito disso ;). Tipo ID Tipo mais genérico do objective C, pode receber qualquer coisa (bloco, selector, objetos, etc). por exemplo, você pode ter um Array (NSArray) com index de diferentes tipos (elimando coisas como template e Generics). Outro beneficio que o ID trás, por consequência, é melhora no tempo de build (porque afinal, você não precisa ficar verificando o tipo de um objeto ID). Distributed Objects O conceito é que basicamente, objetos podem conversar entre sí mesmo em diferentes contextos, threads e até mesmo “servers/apps”. O conceito é de se criar um proxy entre dois objeto e estabelecer uma conexão entre eles. Todas mensagens são interceptadas por esse proxy e ele distribui através de aplicações,servers,threads. Tudo vai depender de como você definir a conexão (assunto mais profundo, n cabe no escopo desse treinamento). Setters e Getters dinâmicos Toda propriedade criada em uma classe gera, automaticamente, métodos de set e get. Isso é feito através do sistema de selector, que consegue definer comportamentos, sem a necessidade de especificar isso na definição do tipo do Objeto. Key-Value Observing Resumidamente, KVO permite que um objeto observe alterações em outro objeto e seja notificado. Utilizando o método do NSOBject addObserver, vc define qual propriedade deve mudar para que aja a notifcação, o objeto que será o Observer e qual selector (método) vai ser invocado quando o mesmo estiver
  13. Mostrar código do DS
  14. O CoreData é um ORM que faz a interface com o storage do device. Ese
  15. MyPersistentDocument - A classe mapeada no CoreData, sua instância de um managed object NSManagedObjectContext - Esse é o lugar que serve como gateway para os seus objetos persistidos no storage. Ele vai definir toda a api de acesso e manutenção desses objetos.