Treinamento i os

198 visualizações

Publicada em

Curso ministrado in-company para iniciar o desenvolvimento com Objective-C para iOS

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
198
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Hot links

    http://rypress.com/tutorials/objective-c/
  • 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.
  • 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...
  • 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.
  • 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
  • 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)
  • 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).
  • 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!).
  • 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.
  • 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.
  • 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
  • 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
  • Mostrar código do DS
  • O CoreData é um ORM que faz a interface com o storage do device. Ese
  • 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.
  • Treinamento i os

    1. 1. Treinamento iOS
    2. 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. 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. 4. Cocoa Touch - Principais APIs - Foundation.framework - UIKit.framework - MapKit.framework
    5. 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. 6. Cocoa Touch - UiKit.framework - Framework com tudo que você vai usar no dia a dia. - Sério, tudo mesmo!
    7. 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. 8. Conceitos Básicos: iOS Design Patterns - MVC-Centric. - Target-Action. - Delegation.
    9. 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. 10. Objective C - Syntax NSString *name = @"Pedro Souza"; CGRect windowFrame = window.frame; NSLog(@"Olá %@", name); [Classe chamandoMetodoEstatico:param1 nomeDoProximoParam:param2]; [name chamandoMetodoDeInstancia];
    11. 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. 12. Objective C - Classes - Lista com todos os tipos pro @property - atomic - nonatomic - retain - copy - readonly - readwrite - assign - strong
    13. 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. 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. 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. 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. 17. Objective C - Dynamic Runtime - ID type - Distributed Objects - Dynamic setters/getters - Key-Value observing
    18. 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.
    19. 19. Storyboard - Exemplo
    20. 20. Conceitos Básicos: iOS Lifecycle
    21. 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
    22. 22. Core Data: Estrutura
    23. 23. Perguntas ?
    24. 24. DOJO TIME

    ×