SlideShare a Scribd company logo
1 of 42
Download to read offline
Saturday, June 25, 2011
Hello NSCoder I
                          Introducción al desarrollo para iOS



                                  @nscoder_bcn



Saturday, June 25, 2011
NSCoder
                     • Profesionales y entusiatas del mundo de la
                          manzana
                     • NSCoder Night
                      • Cada jueves 19:00 - Frankfurt de Pelayo
                     • Twitter: @nscoder_bcn
                     • http://groups.google.com/group/
                          nscoder_bcn
                     • http://nscoder-bcn.tumblr.com/
                                                  [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Programa (Mañana)
                     • Introducción Objective C / iOS
                     • Gestión de Memoria
                     • Debugging and Memory Leaks
                     • “Hello NSCoder” App
                     • Web Service “What’s up, NSCoder”
                     • Testing
                                               [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Programa (Tarde)

                     • Presentación de Omnis Studio
                     • Introducción a la programación con Omnis
                          Studio
                     • Programación de una aplicación cliente
                          Omnis con XCode para iPhone/iPad



                                                  [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Referencias
                     •    Material (github)

                          •   https://github.com/NSCoderNightBCN/Hello-NSCoder

                     •    Apple Developer

                          •   http://developer.apple.com/

                     •    NSCodeCenter

                          •   http://www.nscodecenter.com/

                     •    85% Cocoa

                          •   http://ochentaycincoporcientococoa.tumblr.com/




                                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Resultado
                     •    App que nos localiza

                     •    Conecta a un Web
                          Service

                     •    Devuelva eventos a
                          nuestros alrededores

                     •    Table View

                     •    Detail View


                                                 [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Introduccion iOS
                             Andreas @aquarioverde




Saturday, June 25, 2011
Requirimientos

                     • Conocimientos Objective C / iOS
                     • MacOS X
                     • iOS SDK
                     • XCode / Interface Builder

                                                [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Objective C

                     •    Class / Instance

                     •    Variable

                          •   Properties

                     •    Method




                                             [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Objective C
                     •        Method
                              - (id)loadNearbyEvents:(CLLocation *)location ofType:(NString *)type;


                              + (id)eventFromPList:(NSString *)listPath;




                  •       Message

                          •    receiver / selector / arguments

                              NCEvent *event = [eventLoader loadNearbyEvents:location ofType:type];




                                                                           [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Objective C
                                                                  Inheritance
                                                                                                                               .h
                          #import <UIKit/UIKit.h>

                          @interface NCEvent : NSObject {
                             NSString *name;
                          }

                          - (id)initWithName:(NSString *)name;

                          @end




                          #import “NCEvent.h”
                                                                                                                               .m
                          @implementation NCEvent

                          - (id)initWithName:(NSString *)name {
                          ...
                          }

                          @end


                                                                                [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Objective C
                     •    Protocol



                          @protocol NCEventDelegate <NSObject>
                                                                                                                     .h
                          @required
                          - (void)didFinishUpdatingData;

                          @end




                          @interface NCController : NSObject <NCEventDelegate> {
                                                                                                                     .h
                          }

                          @end




                                                                      [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS
                  •       Frameworks

                          •   Foundation

                          •   UIKit

                  •       UIView / UITableView

                  •       UINavigationBar

                          •   root / push / pop


                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC




                                 [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC




                          Model

           Data

                                         [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC




                          Model                                      View

           Data                                                                       UI

                                         [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC
                                  Logica   Controller




                          Model                                                     View

           Data                                                                                      UI

                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC
                                  Logica   Controller




                          Model                                                     View

           Data                                                                                      UI

                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC
                                  Logica   Controller




                          Model                                                     View

           Data                                                                                      UI

                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC
                                  Logica   Controller




                          Model                                                     View

           Data                                                                                      UI

                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC
                                  Logica   Controller
                                                            <delegate>




                          Model                                                     View

           Data                                                                                      UI

                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC
                                  Logica   Controller
                                                            <delegate>
                                                                <datasource>




                          Model                                                     View

           Data                                                                                      UI

                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC
                                  Logica   Controller
                                                            <delegate>
                                                                <datasource>




                                                                outlet


                          Model                                                     View

           Data                                                                                      UI

                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC
                                  Logica   Controller
                                                            <delegate>
                                                                <datasource>




                                                                outlet          action



                          Model                                                     View

           Data                                                                                      UI

                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
iOS - MVC
                                  Logica   Controller
                                                            <delegate>
                                                                <datasource>




                                                                outlet          action

           KVO
                          Model                                                     View

           Data                                                                                      UI

                                                        [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
“Hello NSCoder” App
                            Alfonso @setfilesl
                          Andreas @aquarioverde




Saturday, June 25, 2011
Pasos
                     • Crear Proyecto
                     • Crear DetailView & Controller
                     • Crear NCEvent objeto
                     • Add NavigationController
                     • Crear TableView
                     • Push/Pop DetailView
                                                [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
XCode: Crear Proyecto

                     • IDE for Objective C
                     • Templates
                      • Window-based Application
                     • com.nscoderbcn.HelloNSCoder
                     • Include Unit Tests

                                              [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
DetailsViewController
                     • Creación de la View de detalles(XIB) y su
                          Controller
                     • File -> New -> New File
                      • UIViewController subclass
                      • With XIB
                      • Save As: NCDetailsViewController
                                                  [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
XCode Groups
                     • Creación de grupos para organizar el
                          proyecto
                     • File -> New -> New Group
                      • UI
                      • XIB
                      • Model
                                                 [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
IB: DetailView
                     • Herramienta para crear GUI
                     • XIB: XML file que define nuestra view
                     • NIB: compilado del XIB
                     • IBOutlet / IBAction
                      • conectar el Controller con los elementos
                          de la View


                                                 [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Details View
                     • NCEventDetailViewController.xib
                     • añadir y posicionar en UIView
                      • UIImageView
                        • Image: NSCoder_Icon.png
                      • 3 UILabel
                      • UITextView
                                                [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Root View Controller
                     • HelloNSCoderAppDelegate
                      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:                .m
                      (NSDictionary *)launchOptions
                      {

                          NCEventDetailViewController *detailViewController = [[NCEventDetailViewController
                      alloc] init];

                          self.window.rootViewController = detailViewController;
                          [detailViewController release];

                          [self.window makeKeyAndVisible];
                          return YES;
                      }




                                                                                   [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
NCEvent
                     • Creación de la clase con los detalles del
                          evento = Model
                     • File -> New -> New File
                      • Objective C class
                      • Subclass of NSObject
                      • Save As: NCEvent
                                                   [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
NCEvent
                     •       header

                          •     properties & init

                     •       implemenation

                          •     synthesize, init, dealloc

                      @interface NCEvent : NSObject {
                                                                                                                         .h
                      }

                      @property   (nonatomic,   copy) NSString   *name;
                      @property   (nonatomic,   copy) NSString   *shortDescription;
                      @property   (nonatomic,   retain) NSDate   *startDate;
                      @property   (nonatomic,   copy) NSString   *location;
                      @property   (nonatomic,   copy) NSString   *fullDescription;

                      - (id)initWithName:(NSString *)eName startDate:(NSDate *)eStartDate location:(NSString
                      *)eLocation;

                      @end




                                                                                      [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Detail View-Controller
                     •    Conectar NCEventDetailViewController a XIB

                          •   property event

                          •   property outlets para los elementos del XIB

                          •   synthesize & dealloc!!!

                     •    Conectar a elementos en XIB

                      @property (nonatomic, retain) NCEvent *event;
                                                                                                                             .h
                      @property   (nonatomic,   retain)   IBOutlet   UILabel *shortDescriptionLabel;
                      @property   (nonatomic,   retain)   IBOutlet   UILabel *startDateLabel;
                      @property   (nonatomic,   retain)   IBOutlet   UILabel *locationLabel;
                      @property   (nonatomic,   retain)   IBOutlet   UITextView *descriptionView;




                                                                                          [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Load View Data
                     • NCEventDetailViewController
                      • cargar datos el evento al aparecer
                      - (void)viewWillAppear:(BOOL)animated
                      {
                          [self.navigationItem setTitle:event.name];

                          self.shortDescriptionLabel.text = event.shortDescription;

                          NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
                          [formatter setDateFormat:@"yyyy-mm-dd"];
                          self.startDateLabel.text = [formatter stringFromDate:event.startDate];
                          self.locationLabel.text = event.location;
                          self.fullDescriptionTextView.text = event.fullDescription;
                      }




                                                                                  [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Crear Evento
                     • HelloNSCoderAppDelegate
                      • crear un evento y asignalo al Controller
                      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:                .m
                      (NSDictionary *)launchOptions
                      {
                          NCEvent *event = [[NCEvent alloc] initWithName:@"Hello NSCoder" startDate:[NSDate
                      date] location:@"CINC Barcelona"];
                          event.shortDescription = ...

                          NCEventDetailViewController *detailViewController = [[NCEventDetailViewController
                      alloc] init];

                          detailViewController.event = event;
                          [event release];

                           ...
                      }




                                                                                  [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Navigation Controller
                     • HelloNSCoderAppDelegate
                      • crear Navigation Controller
                      • set Detail Controller como root
                      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
                                                                                                                     .m
                      (NSDictionary *)launchOptions
                      {
                          ...

                          NCEventDetailViewController *detailViewController = [[NCEventDetailViewController
                      alloc] init];

                          detailViewController.event = event;
                          [event release];

                          UINavigationController *navController = [[UINavigationController alloc]
                      initWithRootViewController: detailViewController];

                          ...
                      }


                                                                                  [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Navigation Title
                     • NCEventDetailsViewController
                      • asignar un titulo a la Navigation Bar


                      - (void)viewWillAppear:(BOOL)animated
                                                                                                      .m
                      {
                          self.navigationItem.title = event.name;
                          ...




                                                                    [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011
Gracias!

                     • @nscoder_bcn

                     • Alfonso: @setfilesl

                     • Andreas: @aquarioverde

                                                [NSCoderBCN event:@”Hello NSCoder” date:28/05/11]
Saturday, June 25, 2011

More Related Content

Viewers also liked

Asia Pacific HR Leaders' Summit
Asia Pacific HR Leaders' SummitAsia Pacific HR Leaders' Summit
Asia Pacific HR Leaders' SummitAndy Wong
 
Mattra Company Profile
Mattra Company ProfileMattra Company Profile
Mattra Company ProfileAizley Shahar
 
Platform 4 work programme for the civil society forum 2 ukrainian
Platform 4 work programme for the civil society forum 2   ukrainianPlatform 4 work programme for the civil society forum 2   ukrainian
Platform 4 work programme for the civil society forum 2 ukrainianProstirUA
 
Unmarried & Unnoticed: The Audience You Can't Afford To Keep Missing
Unmarried & Unnoticed: The Audience You Can't Afford To Keep MissingUnmarried & Unnoticed: The Audience You Can't Afford To Keep Missing
Unmarried & Unnoticed: The Audience You Can't Afford To Keep MissingCatholicMatch.com
 
Summer2011schedule(2)
Summer2011schedule(2)Summer2011schedule(2)
Summer2011schedule(2)Jami Watson
 
Morning routine
Morning routineMorning routine
Morning routinegrangerc
 
Renata Hota - T-shirt Collection II
Renata Hota - T-shirt Collection IIRenata Hota - T-shirt Collection II
Renata Hota - T-shirt Collection IIRenato Mihzael
 

Viewers also liked (13)

Ch04 eec3
Ch04 eec3Ch04 eec3
Ch04 eec3
 
Asia Pacific HR Leaders' Summit
Asia Pacific HR Leaders' SummitAsia Pacific HR Leaders' Summit
Asia Pacific HR Leaders' Summit
 
Mattra Company Profile
Mattra Company ProfileMattra Company Profile
Mattra Company Profile
 
Quiz
QuizQuiz
Quiz
 
Platform 4 work programme for the civil society forum 2 ukrainian
Platform 4 work programme for the civil society forum 2   ukrainianPlatform 4 work programme for the civil society forum 2   ukrainian
Platform 4 work programme for the civil society forum 2 ukrainian
 
CD analysis
CD analysisCD analysis
CD analysis
 
Ch02 eec3
Ch02 eec3Ch02 eec3
Ch02 eec3
 
Unmarried & Unnoticed: The Audience You Can't Afford To Keep Missing
Unmarried & Unnoticed: The Audience You Can't Afford To Keep MissingUnmarried & Unnoticed: The Audience You Can't Afford To Keep Missing
Unmarried & Unnoticed: The Audience You Can't Afford To Keep Missing
 
1[1]
1[1]1[1]
1[1]
 
Summer2011schedule(2)
Summer2011schedule(2)Summer2011schedule(2)
Summer2011schedule(2)
 
Morning routine
Morning routineMorning routine
Morning routine
 
Renata Hota - T-shirt Collection II
Renata Hota - T-shirt Collection IIRenata Hota - T-shirt Collection II
Renata Hota - T-shirt Collection II
 
Types of NEWPRO Replacement Windows
Types of NEWPRO Replacement WindowsTypes of NEWPRO Replacement Windows
Types of NEWPRO Replacement Windows
 

Similar to 01/01 - Hello NSCoder - Introducción

FI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS BasicsFI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS BasicsPetr Dvorak
 
iPhone Development Intro
iPhone Development IntroiPhone Development Intro
iPhone Development IntroLuis Azevedo
 
MFF UK - Introduction to iOS
MFF UK - Introduction to iOSMFF UK - Introduction to iOS
MFF UK - Introduction to iOSPetr Dvorak
 
Introduction to-cocos2d
Introduction to-cocos2dIntroduction to-cocos2d
Introduction to-cocos2dsagaroceanic11
 
Cappuccino - A Javascript Application Framework
Cappuccino - A Javascript Application FrameworkCappuccino - A Javascript Application Framework
Cappuccino - A Javascript Application FrameworkAndreas Korth
 
iOS Einführung am Beispiel von play NEXT TEE
iOS Einführung am Beispiel von play NEXT TEEiOS Einführung am Beispiel von play NEXT TEE
iOS Einführung am Beispiel von play NEXT TEEHendrik Ebel
 
iPhone dev intro
iPhone dev introiPhone dev intro
iPhone dev introVonbo
 
Beginning to iPhone development
Beginning to iPhone developmentBeginning to iPhone development
Beginning to iPhone developmentVonbo
 
MFF UK - Advanced iOS Topics
MFF UK - Advanced iOS TopicsMFF UK - Advanced iOS Topics
MFF UK - Advanced iOS TopicsPetr Dvorak
 
Quick Start to iOS Development
Quick Start to iOS DevelopmentQuick Start to iOS Development
Quick Start to iOS DevelopmentJussi Pohjolainen
 
CoconutKit
CoconutKitCoconutKit
CoconutKitdefagos
 
Никита Корчагин - Programming Apple iOS with Objective-C
Никита Корчагин - Programming Apple iOS with Objective-CНикита Корчагин - Programming Apple iOS with Objective-C
Никита Корчагин - Programming Apple iOS with Objective-CDataArt
 
iOS 2 - The practical Stuff
iOS 2 - The practical StuffiOS 2 - The practical Stuff
iOS 2 - The practical StuffPetr Dvorak
 
iOS Development: What's New
iOS Development: What's NewiOS Development: What's New
iOS Development: What's NewNascentDigital
 

Similar to 01/01 - Hello NSCoder - Introducción (20)

FI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS BasicsFI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS Basics
 
iPhone Development Intro
iPhone Development IntroiPhone Development Intro
iPhone Development Intro
 
MFF UK - Introduction to iOS
MFF UK - Introduction to iOSMFF UK - Introduction to iOS
MFF UK - Introduction to iOS
 
Pioc
PiocPioc
Pioc
 
Munchkin
MunchkinMunchkin
Munchkin
 
Introduction to Cocos2d
Introduction to Cocos2dIntroduction to Cocos2d
Introduction to Cocos2d
 
Introduction to-cocos2d
Introduction to-cocos2dIntroduction to-cocos2d
Introduction to-cocos2d
 
Cappuccino - A Javascript Application Framework
Cappuccino - A Javascript Application FrameworkCappuccino - A Javascript Application Framework
Cappuccino - A Javascript Application Framework
 
iOS Einführung am Beispiel von play NEXT TEE
iOS Einführung am Beispiel von play NEXT TEEiOS Einführung am Beispiel von play NEXT TEE
iOS Einführung am Beispiel von play NEXT TEE
 
iPhone dev intro
iPhone dev introiPhone dev intro
iPhone dev intro
 
Beginning to iPhone development
Beginning to iPhone developmentBeginning to iPhone development
Beginning to iPhone development
 
MFF UK - Advanced iOS Topics
MFF UK - Advanced iOS TopicsMFF UK - Advanced iOS Topics
MFF UK - Advanced iOS Topics
 
Quick Start to iOS Development
Quick Start to iOS DevelopmentQuick Start to iOS Development
Quick Start to iOS Development
 
UI testing in Xcode 7
UI testing in Xcode 7UI testing in Xcode 7
UI testing in Xcode 7
 
CoconutKit
CoconutKitCoconutKit
CoconutKit
 
Iphone course 1
Iphone course 1Iphone course 1
Iphone course 1
 
Никита Корчагин - Programming Apple iOS with Objective-C
Никита Корчагин - Programming Apple iOS with Objective-CНикита Корчагин - Programming Apple iOS with Objective-C
Никита Корчагин - Programming Apple iOS with Objective-C
 
Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014
 
iOS 2 - The practical Stuff
iOS 2 - The practical StuffiOS 2 - The practical Stuff
iOS 2 - The practical Stuff
 
iOS Development: What's New
iOS Development: What's NewiOS Development: What's New
iOS Development: What's New
 

Recently uploaded

Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceIES VE
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...caitlingebhard1
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data SciencePaolo Missier
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityVictorSzoltysek
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformWSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfdanishmna97
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 

Recently uploaded (20)

Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 

01/01 - Hello NSCoder - Introducción

  • 2. Hello NSCoder I Introducción al desarrollo para iOS @nscoder_bcn Saturday, June 25, 2011
  • 3. NSCoder • Profesionales y entusiatas del mundo de la manzana • NSCoder Night • Cada jueves 19:00 - Frankfurt de Pelayo • Twitter: @nscoder_bcn • http://groups.google.com/group/ nscoder_bcn • http://nscoder-bcn.tumblr.com/ [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 4. Programa (Mañana) • Introducción Objective C / iOS • Gestión de Memoria • Debugging and Memory Leaks • “Hello NSCoder” App • Web Service “What’s up, NSCoder” • Testing [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 5. Programa (Tarde) • Presentación de Omnis Studio • Introducción a la programación con Omnis Studio • Programación de una aplicación cliente Omnis con XCode para iPhone/iPad [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 6. Referencias • Material (github) • https://github.com/NSCoderNightBCN/Hello-NSCoder • Apple Developer • http://developer.apple.com/ • NSCodeCenter • http://www.nscodecenter.com/ • 85% Cocoa • http://ochentaycincoporcientococoa.tumblr.com/ [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 7. Resultado • App que nos localiza • Conecta a un Web Service • Devuelva eventos a nuestros alrededores • Table View • Detail View [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 8. Introduccion iOS Andreas @aquarioverde Saturday, June 25, 2011
  • 9. Requirimientos • Conocimientos Objective C / iOS • MacOS X • iOS SDK • XCode / Interface Builder [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 10. Objective C • Class / Instance • Variable • Properties • Method [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 11. Objective C • Method - (id)loadNearbyEvents:(CLLocation *)location ofType:(NString *)type; + (id)eventFromPList:(NSString *)listPath; • Message • receiver / selector / arguments NCEvent *event = [eventLoader loadNearbyEvents:location ofType:type]; [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 12. Objective C Inheritance .h #import <UIKit/UIKit.h> @interface NCEvent : NSObject { NSString *name; } - (id)initWithName:(NSString *)name; @end #import “NCEvent.h” .m @implementation NCEvent - (id)initWithName:(NSString *)name { ... } @end [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 13. Objective C • Protocol @protocol NCEventDelegate <NSObject> .h @required - (void)didFinishUpdatingData; @end @interface NCController : NSObject <NCEventDelegate> { .h } @end [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 14. iOS • Frameworks • Foundation • UIKit • UIView / UITableView • UINavigationBar • root / push / pop [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 15. iOS - MVC [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 16. iOS - MVC Model Data [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 17. iOS - MVC Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 18. iOS - MVC Logica Controller Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 19. iOS - MVC Logica Controller Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 20. iOS - MVC Logica Controller Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 21. iOS - MVC Logica Controller Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 22. iOS - MVC Logica Controller <delegate> Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 23. iOS - MVC Logica Controller <delegate> <datasource> Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 24. iOS - MVC Logica Controller <delegate> <datasource> outlet Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 25. iOS - MVC Logica Controller <delegate> <datasource> outlet action Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 26. iOS - MVC Logica Controller <delegate> <datasource> outlet action KVO Model View Data UI [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 27. “Hello NSCoder” App Alfonso @setfilesl Andreas @aquarioverde Saturday, June 25, 2011
  • 28. Pasos • Crear Proyecto • Crear DetailView & Controller • Crear NCEvent objeto • Add NavigationController • Crear TableView • Push/Pop DetailView [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 29. XCode: Crear Proyecto • IDE for Objective C • Templates • Window-based Application • com.nscoderbcn.HelloNSCoder • Include Unit Tests [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 30. DetailsViewController • Creación de la View de detalles(XIB) y su Controller • File -> New -> New File • UIViewController subclass • With XIB • Save As: NCDetailsViewController [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 31. XCode Groups • Creación de grupos para organizar el proyecto • File -> New -> New Group • UI • XIB • Model [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 32. IB: DetailView • Herramienta para crear GUI • XIB: XML file que define nuestra view • NIB: compilado del XIB • IBOutlet / IBAction • conectar el Controller con los elementos de la View [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 33. Details View • NCEventDetailViewController.xib • añadir y posicionar en UIView • UIImageView • Image: NSCoder_Icon.png • 3 UILabel • UITextView [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 34. Root View Controller • HelloNSCoderAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: .m (NSDictionary *)launchOptions { NCEventDetailViewController *detailViewController = [[NCEventDetailViewController alloc] init]; self.window.rootViewController = detailViewController; [detailViewController release]; [self.window makeKeyAndVisible]; return YES; } [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 35. NCEvent • Creación de la clase con los detalles del evento = Model • File -> New -> New File • Objective C class • Subclass of NSObject • Save As: NCEvent [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 36. NCEvent • header • properties & init • implemenation • synthesize, init, dealloc @interface NCEvent : NSObject { .h } @property (nonatomic, copy) NSString *name; @property (nonatomic, copy) NSString *shortDescription; @property (nonatomic, retain) NSDate *startDate; @property (nonatomic, copy) NSString *location; @property (nonatomic, copy) NSString *fullDescription; - (id)initWithName:(NSString *)eName startDate:(NSDate *)eStartDate location:(NSString *)eLocation; @end [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 37. Detail View-Controller • Conectar NCEventDetailViewController a XIB • property event • property outlets para los elementos del XIB • synthesize & dealloc!!! • Conectar a elementos en XIB @property (nonatomic, retain) NCEvent *event; .h @property (nonatomic, retain) IBOutlet UILabel *shortDescriptionLabel; @property (nonatomic, retain) IBOutlet UILabel *startDateLabel; @property (nonatomic, retain) IBOutlet UILabel *locationLabel; @property (nonatomic, retain) IBOutlet UITextView *descriptionView; [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 38. Load View Data • NCEventDetailViewController • cargar datos el evento al aparecer - (void)viewWillAppear:(BOOL)animated { [self.navigationItem setTitle:event.name]; self.shortDescriptionLabel.text = event.shortDescription; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-mm-dd"]; self.startDateLabel.text = [formatter stringFromDate:event.startDate]; self.locationLabel.text = event.location; self.fullDescriptionTextView.text = event.fullDescription; } [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 39. Crear Evento • HelloNSCoderAppDelegate • crear un evento y asignalo al Controller - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: .m (NSDictionary *)launchOptions { NCEvent *event = [[NCEvent alloc] initWithName:@"Hello NSCoder" startDate:[NSDate date] location:@"CINC Barcelona"]; event.shortDescription = ... NCEventDetailViewController *detailViewController = [[NCEventDetailViewController alloc] init]; detailViewController.event = event; [event release]; ... } [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 40. Navigation Controller • HelloNSCoderAppDelegate • crear Navigation Controller • set Detail Controller como root - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: .m (NSDictionary *)launchOptions { ... NCEventDetailViewController *detailViewController = [[NCEventDetailViewController alloc] init]; detailViewController.event = event; [event release]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: detailViewController]; ... } [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 41. Navigation Title • NCEventDetailsViewController • asignar un titulo a la Navigation Bar - (void)viewWillAppear:(BOOL)animated .m { self.navigationItem.title = event.name; ... [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011
  • 42. Gracias! • @nscoder_bcn • Alfonso: @setfilesl • Andreas: @aquarioverde [NSCoderBCN event:@”Hello NSCoder” date:28/05/11] Saturday, June 25, 2011