Minicurso Objective-C

4,500 views
4,371 views

Published on

Minicurso ministrado em 18/02 na DueCappa

Published in: Technology

Minicurso Objective-C

  1. 1. Objective-C Saulo Arruda18/02/2012
  2. 2. @sauloarruda• Co-fundador e desenvolvedor da Jera• 12 anos fazendo software• 6 meses fazendo iOS
  3. 3. Desenvolvimento iOShttps://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/Introduction/Introduction.html
  4. 4. • Conhecendo a linguagem Objective-C• Explorando o framework Cocoa Touch• Criando uma aplicação simples• Testando no dispositivo• Publicando na App Store
  5. 5. Installing Tools
  6. 6. Ferramentas1. Download Xcode2. Inscrever-se como um desenvolvedor no iOS Developer Program
  7. 7. Jump Right In
  8. 8. Hello World
  9. 9. Tools
  10. 10. Simulator e Debugger
  11. 11. Provisioning Profiles
  12. 12. Testar no dispositivo
  13. 13. Documentação
  14. 14. Profiler
  15. 15. Snapshots
  16. 16. SCM - Git
  17. 17. Distribuição
  18. 18. Language
  19. 19. Objective-C
  20. 20. 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
  21. 21. 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.
  22. 22. Classes e objetosExtensão Tipo Header files da definição de classes, .h tipos, funções e constantes. Source files da implementação em .m Objective-C ou C Source files da imeplementação em C++ .mm além de Objective-C e C
  23. 23. Definição de Classe
  24. 24. Implementação#import "MyClass.h" // Static typing MyClass *myObject1;@implementation MyClass // Dynamic typing- (id)initWithString:(NSString *)aName id myObject2;{ // código vai aqui}+ (MyClass *)myClassWithString:(NSString *)aName{ // código vai aqui}@end
  25. 25. Definição do método
  26. 26. 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;
  27. 27. 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];
  28. 28. 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;
  29. 29. Blocosint result = myBlock(4); // result is 28
  30. 30. Protocolos e Categorias@interface HelloWorldViewController : UIViewController <UITextFieldDelegate> {}@end@protocol MyProtocol- (void)myProtocolMethod;@end@interface NSDate (NSDateCreation)
  31. 31. Basic Tasks
  32. 32. Frameworks
  33. 33. Apps are Driven by Events
  34. 34. Using an Object-Oriented Framework
  35. 35. Design Patterns
  36. 36. Model-View-Controller
  37. 37. Delegation
  38. 38. Protocol
  39. 39. Notification
  40. 40. Target-action
  41. 41. Key-Value Observer
  42. 42. Outros• View hierarchy• Responder chain• View controller• Receptionist
  43. 43. Human Interface Design
  44. 44. Human Interface Principles• Integridade estética• Consistência• Manipulação direta• Feedback• Metaphors• Controle do usuário
  45. 45. 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
  46. 46. Estratégia de design• Enumere a lista de funcionalidades• Desenhe para o dispositivo• Customize apropriadamente• Prototipe e itere
  47. 47. App Design
  48. 48. App Store
  49. 49. Preparar para App Store
  50. 50. Finding Information
  51. 51. Where to Go from Here
  52. 52. Obrigado!
  53. 53. @sauloarrudasaulo@jera.com.br

×