Tools & Libraries 	

for iOS
Teri Grossheim	

Mobile+Web Devcon Chicago 2014
Agenda
Tools & Frameworks	

Swift Basics	

HTML5
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Apple Developer Programs
Separate programs for iOS & OS X (Individual
vs. Company)	

Apps distributed on App Store	

iOS Developer Enterprise Program	

iOS Developer University Program	

Safari Developer Program	

Register as an Apple Developer	

Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Apple Developer Library
For iOS, OS X, Safari, iAd	

	

 Programming Guides	

	

 Reference Code	

	

 Sample Code	

Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Tools & Frameworks
Xcode	

	

	

 Xcode Service	

	

	

 Instruments	

	

	

 The Developer Library	

Other Tools	

iOS SDK	

	

	

 Frameworks
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Xcode
Suite of Development Tools	

Write & Debug	

iOS Simulator	

Instruments	

Interface Builder
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Xcode
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Xcode Service
OS X Server	

Enable Access to Source Code Repositories	

Configure Bots to Perform Continuous
Integrations	

Manage & Monitor Bots from Log Navigator &
Web Browser	

Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Instruments
Analyze performance
of iOS apps	

Gathers data about:	

	

 Memory Usage	

	

 Disk Activity	

	

 Network Activity	

	

 Graphics	

Correlation of data
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Playgrounds
A new type of document in
Xcode 6	

	

 Design a new algorithm	

	

 Create new tests	

	

 Experiment with new APIs	

Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Other Tools
AppCode	

Injection for Xcode	

Dash	

Objective-Clean	

Hockey Coach
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
iOS SDK
Cocoa Touch Layer: Key frameworks 
Media Layer: Graphics, audio, and video
technologies
Core Services Layer: Fundamental
system services for apps
Core OS Layer: Low-level features
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Cocoa Touch Layer
Key Technologies
AirDrop	

Text Kit	

UI Kit Dynamics	

Multitasking	

Auto Layout	

Storyboards	

APNS	

Gesture Recognizers	

Standard SystemView Controllers
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Cocoa Touch Layer
Frameworks
AddressBookUI MapKit
EventKitUI MessagesUI
iAd.framework UIKit
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Core Services Layer
Peer-to-Peer Services	

iCloud Storage	

Automatic Reference
Counting	

Block Objects	

Data Protection	

File-Sharing Support	

Grand Central Dispatch	

In-App Purchase	

SQLite	

XML Support	

Key Technologies
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Core Services Layer
Frameworks
Accounts Event Kit
Address Book Foundation
Ad Support HealthKit
CFNetwork HomeKit
Core Data JavaScript Core
Core Foundation PassKit
Core Location PushKit
Core Motion StoreKit
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Core Services Layer
New for iOS 8
HealthKit Headers	

!
HKDefines	

HKHealthStore	

HKMetadata	

HKObjectType	

HKStatistics	

HKType Identifiers	

HKUnit
HomeKit Headers	

!
HMAccessory	

HMCharacteristic	

HKCharacteristicMetadata	

HMError	

HMHome	

HM Service
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Core Services Layer
New for iOS 8
Network Extension Headers	

!
NEOnDemandRule	

NEVPNConnection	

NEVPNProtocolIKEv2	

NEVPNProtocolIPSec	

!
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Core Services
!
	

 iBeacon/Location Based Apps 	

	

 Passes & Passbook	

	

 Health/Fitness Apps	

	

 Home Automation Apps	

	

	

 	

Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Core OS Layer
Frameworks
Accelerate
Core Bluetooth
External Accessory
Generic Security Service
Security
System
64-bit Support
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift
Cocoa & Cocoa Touch	

Objective-C & C	

Xcode 6 (beta)	

Fast, Modern, Safe, 

Interactive	

Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
var languageName: String = “Swift”	

var version: Double = 1.0	

var introduced: Int = 2014	

var isAwesome: Bool = true
Constants &Variables
	

 let languageName: String = “Swift”	

	

 var version: Double = 1.0	

	

 let introduced: Int = 2014	

	

 let isAwesome: Bool = true
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
	

 var languageName: String = “Swift”	

	

 var version: Double = 1.0	

	

 var introduced: Int = 2014	

	

 var isAwesome: Bool = true
Type Inference
	

 let languageName:“Swift”	

	

 var version = 1.0	

	

 let introduced = 2014	

	

 let isAwesome = true
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
Strings
let someString = “I appear to be a string”	

// inferred to be of type String	

!
urlRequest.HTTPMethod = “POST”	

!
let components = “~/Documents/Swift”.pathComponents	

// [“~”,“Documents”,“Swift”]
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
Characters
for character in “chicago” {	

	

 printIn(character)	

}	

!
c
h
i
c
a
g
o
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
Building Complex Strings
let a = 3, b = 5	

!
// “3 times 5 is 15”	

!
let mathResult = “(a) times (b) is (a * b)”	

!
// “3 times 5 is 15”	

!
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
Array & Dictionary
let components = “~/Documents/Swift”.pathComponents	

// [“~”,“Documents”,“Swift”]	

// returns an Array, not an NS array
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
Typed Collections
var names: String [ ] = [“Aaron”,“Anne”,“Bill”,“Jim”]
var names = [“Aaron”,“Anne”,“Bill”,“Jim”]	

// an array of String values
var numberOfLegs = [“dog”: 4, “spider”: 8, “zebra”: 4]	

// an Dictionary with String keys and Int values
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
Modifying an Array
var shoppingList = [ “Butter” , “Carrots” ]	

printIn(shoppingList[0])	

shoppingList += “Sugar”	

shoppingList += [ “Salt” , “Pepper” , “Thyme” ]	

shoppingList[1] += “Three carrots” 	

shoppingList[4…6] += [ “Sage” ,“Rosemary” ,“Garlic” ]	

[ “Butter” , Carrots” ]	

[ “Butter” ,“Carrots” ,“Sugar” ]	

[ “Butter” ,“Carrots” ,“Sugar” ,“Salt” ,“Pepper” , Thyme” ]	

[ “Butter” ,“Three carrots” ,“Sugar” ,“Salt” ,“Pepper” ,
Thyme” ]	

[ “Butter” ,“Three carrots” ,“Sugar” ,“Sage” ,“Rosemary” ,
Garlic” ]
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
Modifying a Dictionary
var numberOfLegs = [“dog”: 3, spider”: 8, “zebra”: 4]	

numberOfLegs[“snake”] = 0	

numberOfLegs[“dog”] = 4
[ “dog”: 3,“spider”: 8, “zebra”: 4]	

[ “dog”: 3,“spider”: 8, “zebra”: 4, “snake”: 0]	

[ “dog”: 4,“spider”: 8, “zebra”: 4, “snake”: 0]
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
Swift - The Basics
RetrievingValue from a Dictionary using Optionals
var numberOfLegs = [“dog”: 4, spider”: 8, “zebra”: 4]	

!
let possibleLegCount: Int? = numberOfLegs [ “ant” ]	

!
if possibleLegCount == nil {	

	

 printIn(“Ant wasn’t found”)	

} else {	

	

 let legCount = possibleLegCount!	

	

 printIn(“An ant has (legCount) legs”)	

}
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
HTML5
!
Safari Developer Library	

Safari Extensions	

Web Inspector	

Web App & iOS Web Apps	

Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
References
WWDC 2014 Videos	

	

	

 Introduction to Swift

	

	

 Swift Playgrounds	

Other Tools	

Adam Swinden: http://ios.devtools.me

Ben Scheirman: http://benscheirman.com/2013/08/the-ios-developers-toolbelt/ 	

iOS Developer Library	

Xcode Overview: https://developer.apple.com/library/mac/documentation/ToolsLanguages/Conceptual/
Xcode_Overview/Xcode_Overview.pdf 

Xcode Service: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-
continuous_integration/000-About_Continuous_Integration/about_continuous_integration.html#//apple_ref/
doc/uid/TP40013292-CH1-SW1 

iOS Technology Overview: https://developer.apple.com/library/ios/documentation/miscellaneous/conceptual/
iphoneostechoverview/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007898-CH1-SW1 

iOS Technology Overview: iOS Developer Tools: https://developer.apple.com/library/ios/documentation/
miscellaneous/conceptual/iphoneostechoverview/iPhoneOSDeveloperTools/iPhoneOSDeveloperTools.html 

Safari for Developers: https://developer.apple.com/safari/features/ 

iOS 7.1 to iOS 8.0 API Differences: https://developer.apple.com/library/prerelease/ios/releasenotes/General/
iOS80APIDiffs/index.html#//apple_ref/doc/uid/TP40014455	

Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
ThankYou - Q&A


@terigrossheim	



terigrossheim@icloud.com



Teri Grossheim



google.com/+TeriGrossheim	

!
Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014

Tools, Frameworks, & Swift for iOS

  • 1.
    Tools & Libraries for iOS Teri Grossheim Mobile+Web Devcon Chicago 2014
  • 2.
    Agenda Tools & Frameworks SwiftBasics HTML5 Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 3.
    Apple Developer Programs Separateprograms for iOS & OS X (Individual vs. Company) Apps distributed on App Store iOS Developer Enterprise Program iOS Developer University Program Safari Developer Program Register as an Apple Developer Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 4.
    Apple Developer Library ForiOS, OS X, Safari, iAd Programming Guides Reference Code Sample Code Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 5.
    Tools & Frameworks Xcode Xcode Service Instruments The Developer Library Other Tools iOS SDK Frameworks Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 6.
    Xcode Suite of DevelopmentTools Write & Debug iOS Simulator Instruments Interface Builder Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 7.
    Xcode Teri Grossheim -Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 8.
    Xcode Service OS XServer Enable Access to Source Code Repositories Configure Bots to Perform Continuous Integrations Manage & Monitor Bots from Log Navigator & Web Browser Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 9.
    Instruments Analyze performance of iOSapps Gathers data about: Memory Usage Disk Activity Network Activity Graphics Correlation of data Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 10.
    Playgrounds A new typeof document in Xcode 6 Design a new algorithm Create new tests Experiment with new APIs Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 11.
    Other Tools AppCode Injection forXcode Dash Objective-Clean Hockey Coach Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 12.
    iOS SDK Cocoa TouchLayer: Key frameworks Media Layer: Graphics, audio, and video technologies Core Services Layer: Fundamental system services for apps Core OS Layer: Low-level features Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 13.
    Cocoa Touch Layer KeyTechnologies AirDrop Text Kit UI Kit Dynamics Multitasking Auto Layout Storyboards APNS Gesture Recognizers Standard SystemView Controllers Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 14.
    Cocoa Touch Layer Frameworks AddressBookUIMapKit EventKitUI MessagesUI iAd.framework UIKit Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 15.
    Core Services Layer Peer-to-PeerServices iCloud Storage Automatic Reference Counting Block Objects Data Protection File-Sharing Support Grand Central Dispatch In-App Purchase SQLite XML Support Key Technologies Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 16.
    Core Services Layer Frameworks AccountsEvent Kit Address Book Foundation Ad Support HealthKit CFNetwork HomeKit Core Data JavaScript Core Core Foundation PassKit Core Location PushKit Core Motion StoreKit Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 17.
    Core Services Layer Newfor iOS 8 HealthKit Headers ! HKDefines HKHealthStore HKMetadata HKObjectType HKStatistics HKType Identifiers HKUnit HomeKit Headers ! HMAccessory HMCharacteristic HKCharacteristicMetadata HMError HMHome HM Service Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 18.
    Core Services Layer Newfor iOS 8 Network Extension Headers ! NEOnDemandRule NEVPNConnection NEVPNProtocolIKEv2 NEVPNProtocolIPSec ! Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 19.
    Core Services ! iBeacon/LocationBased Apps Passes & Passbook Health/Fitness Apps Home Automation Apps Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 20.
    Core OS Layer Frameworks Accelerate CoreBluetooth External Accessory Generic Security Service Security System 64-bit Support Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 21.
    Swift Cocoa & CocoaTouch Objective-C & C Xcode 6 (beta) Fast, Modern, Safe, 
 Interactive Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 22.
    Swift - TheBasics var languageName: String = “Swift” var version: Double = 1.0 var introduced: Int = 2014 var isAwesome: Bool = true Constants &Variables let languageName: String = “Swift” var version: Double = 1.0 let introduced: Int = 2014 let isAwesome: Bool = true Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 23.
    Swift - TheBasics var languageName: String = “Swift” var version: Double = 1.0 var introduced: Int = 2014 var isAwesome: Bool = true Type Inference let languageName:“Swift” var version = 1.0 let introduced = 2014 let isAwesome = true Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 24.
    Swift - TheBasics Strings let someString = “I appear to be a string” // inferred to be of type String ! urlRequest.HTTPMethod = “POST” ! let components = “~/Documents/Swift”.pathComponents // [“~”,“Documents”,“Swift”] Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 25.
    Swift - TheBasics Characters for character in “chicago” { printIn(character) } ! c h i c a g o Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 26.
    Swift - TheBasics Building Complex Strings let a = 3, b = 5 ! // “3 times 5 is 15” ! let mathResult = “(a) times (b) is (a * b)” ! // “3 times 5 is 15” ! Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 27.
    Swift - TheBasics Array & Dictionary let components = “~/Documents/Swift”.pathComponents // [“~”,“Documents”,“Swift”] // returns an Array, not an NS array Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 28.
    Swift - TheBasics Typed Collections var names: String [ ] = [“Aaron”,“Anne”,“Bill”,“Jim”] var names = [“Aaron”,“Anne”,“Bill”,“Jim”] // an array of String values var numberOfLegs = [“dog”: 4, “spider”: 8, “zebra”: 4] // an Dictionary with String keys and Int values Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 29.
    Swift - TheBasics Modifying an Array var shoppingList = [ “Butter” , “Carrots” ] printIn(shoppingList[0]) shoppingList += “Sugar” shoppingList += [ “Salt” , “Pepper” , “Thyme” ] shoppingList[1] += “Three carrots” shoppingList[4…6] += [ “Sage” ,“Rosemary” ,“Garlic” ] [ “Butter” , Carrots” ] [ “Butter” ,“Carrots” ,“Sugar” ] [ “Butter” ,“Carrots” ,“Sugar” ,“Salt” ,“Pepper” , Thyme” ] [ “Butter” ,“Three carrots” ,“Sugar” ,“Salt” ,“Pepper” , Thyme” ] [ “Butter” ,“Three carrots” ,“Sugar” ,“Sage” ,“Rosemary” , Garlic” ] Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 30.
    Swift - TheBasics Modifying a Dictionary var numberOfLegs = [“dog”: 3, spider”: 8, “zebra”: 4] numberOfLegs[“snake”] = 0 numberOfLegs[“dog”] = 4 [ “dog”: 3,“spider”: 8, “zebra”: 4] [ “dog”: 3,“spider”: 8, “zebra”: 4, “snake”: 0] [ “dog”: 4,“spider”: 8, “zebra”: 4, “snake”: 0] Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 31.
    Swift - TheBasics RetrievingValue from a Dictionary using Optionals var numberOfLegs = [“dog”: 4, spider”: 8, “zebra”: 4] ! let possibleLegCount: Int? = numberOfLegs [ “ant” ] ! if possibleLegCount == nil { printIn(“Ant wasn’t found”) } else { let legCount = possibleLegCount! printIn(“An ant has (legCount) legs”) } Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 32.
    HTML5 ! Safari Developer Library SafariExtensions Web Inspector Web App & iOS Web Apps Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 33.
    References WWDC 2014 Videos Introduction to Swift
 Swift Playgrounds Other Tools Adam Swinden: http://ios.devtools.me
 Ben Scheirman: http://benscheirman.com/2013/08/the-ios-developers-toolbelt/ iOS Developer Library Xcode Overview: https://developer.apple.com/library/mac/documentation/ToolsLanguages/Conceptual/ Xcode_Overview/Xcode_Overview.pdf 
 Xcode Service: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide- continuous_integration/000-About_Continuous_Integration/about_continuous_integration.html#//apple_ref/ doc/uid/TP40013292-CH1-SW1 
 iOS Technology Overview: https://developer.apple.com/library/ios/documentation/miscellaneous/conceptual/ iphoneostechoverview/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007898-CH1-SW1 
 iOS Technology Overview: iOS Developer Tools: https://developer.apple.com/library/ios/documentation/ miscellaneous/conceptual/iphoneostechoverview/iPhoneOSDeveloperTools/iPhoneOSDeveloperTools.html 
 Safari for Developers: https://developer.apple.com/safari/features/ 
 iOS 7.1 to iOS 8.0 API Differences: https://developer.apple.com/library/prerelease/ios/releasenotes/General/ iOS80APIDiffs/index.html#//apple_ref/doc/uid/TP40014455 Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014
  • 34.
    ThankYou - Q&A 
 @terigrossheim 
 terigrossheim@icloud.com
 
 TeriGrossheim
 
 google.com/+TeriGrossheim ! Teri Grossheim - Tools & Libraries for iOS - Mobile+Web Devcon Chicago 2014