Building Faster in Xcode

Size: px
Start display at page:

Download "Building Faster in Xcode"

Transcription

1 #WWDC18 Building Faster in Xcode Session 408 David Owens, Xcode Engineer Jordan Rose, Swift Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

2 Building Faster in Xcode

3 Building Faster in Xcode Increasing Build Efficiency Reducing the Work on Rebuilds

4 Building Faster in Xcode Increasing Build Efficiency Reducing the Work on Rebuilds Parallelizing your build process Declaring script inputs and outputs Measuring your build time

5 Building Faster in Xcode Increasing Build Efficiency Reducing the Work on Rebuilds Parallelizing your build process Declaring script inputs and outputs Measuring your build time Understanding dependencies in Swift Dealing with complex expressions Limiting your Objective-C/Swift interface

6 Parallelizing Your Build Increasing build efficiency

7 Xcode s Targets and Dependencies

8 Xcode s Targets and Dependencies Target specifies a product to build ios App Framework Game Unit Tests Framework

9 Xcode s Targets and Dependencies Target specifies a product to build ios App Framework Game Unit Tests Target dependency requires another target Explicit via Target Dependencies Implicit via Link Binary with Libraries Framework

10 Game Dependency Graph Tests Game Shaders Physics Utilities

11 Game Dependency Graph Tests Game List of all targets to build Shaders Physics Utilities

12 Game Dependency Graph Tests Game List of all targets to build Dependency between targets Shaders Physics Utilities

13 Game Dependency Graph List of all targets to build Dependency between targets Build order can be derived Physics Utilities Shaders Game Tests

14 Serialized Build Timeline Physics Utilities Shaders Game Tests

15 Serialized Build Timeline Physics Utilities Shaders Game Tests

16 Parallelized Build Timeline

17 Parallelized Build Timeline

18 Parallelized Build Timeline Amount of work did not change

19 Parallelized Build Timeline Amount of work did not change Time to build decreased

20 Parallelized Build Timeline Time savings Amount of work did not change Time to build decreased

21 Parallelized Build Timeline Time savings Amount of work did not change Time to build decreased Increased hardware utilization

22 Extreme Parallelization

23 Extreme Parallelization

24 How do we get there?

25

26

27

28 Project Configuration Tests Game Shaders Physics Utilities

29 Project Configuration Tests Game Shaders Physics Utilities

30 Project Configuration Tests Game Shaders Physics Utilities

31 Game Target Dependencies Game

32 Game Target Dependencies Game Physics Utilities

33 Game Target Dependencies Game Physics Utilities

34 Game Target Dependencies Game Shaders Physics Utilities

35 Game Target Dependencies Game Shaders Physics Utilities

36 Shaders Target Dependencies Shaders Utilities

37 Utilities Target Dependencies Physics Utilities

38 Tests Target Dependencies Tests Game Shaders Utilities

39 Examine Tests Dependencies Tests Game Shaders Utilities

40 Examine Tests Dependencies UI Tests (Game) Tests (Shaders) Tests (Utilities) Game Shaders Utilities

41 Examine Tests Dependencies UI Tests (Game) Tests (Shaders) Tests (Utilities) Game Shaders Utilities

42 Examine Tests Dependencies UI Tests (Game) Tests (Shaders) Tests (Utilities) Game Shaders Utilities

43 Reduce Dependency Exposure Game Shaders Physics Utilities

44 Reduce Dependency Exposure Game Shaders Physics Utilities

45 Reduce Dependency Exposure Game Shaders Physics Code Gen Utilities

46 Reduce Dependency Exposure Game Shaders Physics Code Gen Utilities

47 Examine Unused Dependencies Physics Utilities

48 Examine Unused Dependencies Physics Utilities

49 Examine Unused Dependencies Physics Utilities

50 Target Build Process

51 Parallelized Target Build Process NEW

52 Parallelized Target Build Process NEW

53 Parallelized Target Build Process NEW Compile sources can start earlier

54 Parallelized Target Build Process NEW Compile sources can start earlier Waits only for what it needs

55 Parallelized Target Build Process NEW Compile sources can start earlier Waits only for what it needs Must wait for Run Script phases

56 Run Script Phases Reducing the work on rebuilds

57 Allows you to customize your build process for your exact needs.

58

59

60

61

62

63

64 File Lists # assets.xcfilelist # Game # Asset masters $(SRCROOT)/Assets/game.psd $(SRCROOT)/Assets/player.psd $(SRCROOT)/Assets/hud.psd

65 File Lists Newline separated # assets.xcfilelist # Game # Asset masters $(SRCROOT)/Assets/game.psd $(SRCROOT)/Assets/player.psd $(SRCROOT)/Assets/hud.psd

66 File Lists Newline separated # assets.xcfilelist # Game Support for build setting variables # Asset masters $(SRCROOT)/Assets/game.psd $(SRCROOT)/Assets/player.psd $(SRCROOT)/Assets/hud.psd

67 File Lists Newline separated # assets.xcfilelist # Game Support for build setting variables # Asset masters Cannot be generated during the build $(SRCROOT)/Assets/game.psd $(SRCROOT)/Assets/player.psd $(SRCROOT)/Assets/hud.psd

68

69

70

71

72 When the Run Script Phase is Run No input files declared Input files changed Output files missing

73 Documentation NEW

74 Dependency Cycle Detection NEW

75 More on Dependency Cycles NEW

76 More on Dependency Cycles NEW

77 Measuring Build Time Increasing build efficiency

78

79

80 Build Log Filters

81 Build Log Filters

82 Build With Timing Summary NEW

83

84

85

86

87 $ xcodebuild -showbuildtimingsummary Build Timing Summary CompileSwiftSources (1 task) seconds PhaseScriptExecution (1 task) seconds CompileAssetCatalog (1 task) seconds CompileStoryboard (1 task) seconds CompileMetalFile (5 tasks) seconds CopySwiftLibs (1 task) seconds Ld (2 tasks) seconds CodeSign (3 tasks) seconds CompileC (1 task) seconds MetalLink (2 tasks) seconds Ditto (4 tasks) seconds LinkStoryboards (1 task) seconds

88 $ xcodebuild -showbuildtimingsummary Build Timing Summary CompileSwiftSources (1 task) seconds PhaseScriptExecution (1 task) seconds CompileAssetCatalog (1 task) seconds CompileStoryboard (1 task) seconds CompileMetalFile (5 tasks) seconds CopySwiftLibs (1 task) seconds Ld (2 tasks) seconds CodeSign (3 tasks) seconds CompileC (1 task) seconds MetalLink (2 tasks) seconds Ditto (4 tasks) seconds LinkStoryboards (1 task) seconds

89 Source-Level Improvements Jordan Rose, Swift Engineer

90 Remove this build time workaround Reducing the work on rebuilds

91 Turn off Whole Module Mode For Debug Builds

92 Turn off Whole Module Mode For Debug Builds

93 Turn off Whole Module Mode For Debug Builds What s New in Swift WWDC 2018 Behind the Scenes of the Xcode Build Process Hall 2 Friday 2:00PM

94 Increasing Build Efficiency Reducing the Work on Rebuilds Parallelizing your build process Declaring script inputs and outputs Measuring your build time Understanding dependencies in Swift Dealing with complex expressions Limiting your Objective-C/Swift interface

95 Dealing with complex expressions Understanding dependencies in Swift Limiting your Objective-C/Swift interface

96 When a build takes a long time, there is often a key piece of information you can add to make it better.

97 Dealing with Complex Expressions Increasing build efficiency

98 Use Explicit Types for Complex Properties struct ContrivedExample { var bignumber = [4, 3, 2].reduce(1) { sofar, next in pow(next, sofar) }. }.

99 Use Explicit Types for Complex Properties struct ContrivedExample { var bignumber: Double = [4, 3, 2].reduce(1) { sofar, next in pow(next, sofar) }. }.

100 Provide Types in Complex Closures func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) {. sofar, next in }. }.

101 Provide Types in Complex Closures func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) {. sofar, next in sofar!= nil && next!= nil? sofar! + next! : (sofar!= nil? sofar! : (next!= nil? next! : nil)) }. }.

102 Provide Types in Complex Closures func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) {. sofar, next in }. sofar!= nil && next!= nil? sofar! + next! : (sofar!= nil? sofar! : (next!= nil? next! : nil)) }. error: the compiler is unable to type-check this expression in reasonable time

103 Provide Types in Complex Closures func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) {. sofar, next in sofar!= nil && next!= nil? sofar! + next! : (sofar!= nil? sofar! : (next!= nil? next! : nil)) }. }.

104 Provide Types in Complex Closures func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) { ( sofar : Int?, next : Int?) -> Int? in sofar!= nil && next!= nil? sofar! + next! : (sofar!= nil? sofar! : (next!= nil? next! : nil)) }. }.

105 Provide Types in Complex Closures func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) { sofar, next in sofar!= nil && next!= nil? sofar! + next! : (sofar!= nil? sofar! : (next!= nil? next! : nil)) }. }.

106 Provide Types in Complex Closures func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) { sofar, next in sofar!= nil && next!= nil? sofar! + next! : (sofar!= nil? sofar! : (next!= nil? next! : nil)) }. }.

107 Provide Types in Complex Closures func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) { sofar, next in sofar!= nil && next!= nil? sofar! + next! : (sofar!= nil? sofar! : (next!= nil? next! : nil)) }. }.

108 Provide Types in Complex Closures func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) { sofar, next in sofar!= nil && next!= nil? sofar! + next! : (sofar!= nil? sofar! : (next!= nil? next! : nil)) }. }.

109 Break Apart Complex Expressions func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) { sofar, next in } }

110 Break Apart Complex Expressions func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) { sofar, next in if sofar!= nil && next!= nil { return sofar! + next! } if sofar!= nil { return sofar! } if next!= nil { return next! } return nil } }

111 Break Apart Complex Expressions func sumnonoptional(i: Int?, j: Int?, k: Int?) -> Int? { return [i, j, k].reduce(0) { sofar, next in if let sofar = sofar { if let next = next { return sofar + next } return sofar } else { return next } } }

112 Use AnyObject Methods and Properties Sparingly weak var delegate: AnyObject? func reportsuccess() { delegate?.myoperationdidsucceed(self) }.

113 Use AnyObject Methods and Properties Sparingly weak var delegate: AnyObject? func reportsuccess() { delegate?.myoperationdidsucceed(self) }.

114 Use AnyObject Methods and Properties Sparingly weak var delegate: AnyObject? func reportsuccess() { delegate?.myoperationdidsucceed(self) }.

115 Use AnyObject Methods and Properties Sparingly weak var delegate: AnyObject? func reportsuccess() { delegate?.myoperationdidsucceed(self) }.?

116 Use AnyObject Methods and Properties Sparingly Define a protocol instead weak var delegate: AnyObject? func reportsuccess() { delegate?.myoperationdidsucceed(self) }. protocol MyOperationDelegate: class { } func myoperationdidsucceed(_ operation: MyOperation)

117 Use AnyObject Methods and Properties Sparingly Define a protocol instead weak var delegate: MyOperationDelegate? func reportsuccess() { delegate?.myoperationdidsucceed(self) }. protocol MyOperationDelegate: class { } func myoperationdidsucceed(_ operation: MyOperation)

118 Use AnyObject Methods and Properties Sparingly Define a protocol instead weak var delegate: MyOperationDelegate? func reportsuccess() { delegate?.myoperationdidsucceed(self) }. protocol MyOperationDelegate: class { } func myoperationdidsucceed(_ operation: MyOperation)

119 Understanding Dependencies in Swift Reducing the work on rebuilds

120 Incremental Builds Are File-Based struct Point { } var x, y: Double

121 Incremental Builds Are File-Based struct Point { let point = Point(x: 3.0, y: 4.0) var x, y: Double } let distance = sqrt(point.x * point.x + point.y * point.y)

122 Incremental Builds Are File-Based struct Point { let point = Point(x: 3.0, y: 4.0) var x, y: Double } let distance = sqrt(point.x * point.x + point.y * point.y)

123 Incremental Builds Are File-Based struct Point { let point = Point(x: 3.0, y: 4.0) var x, y: Double init(x: Double, y: Double) { assert(x.isnormal) assert(y.isnormal) let distance = sqrt(point.x * point.x + point.y * point.y) self.x = x self.y = y } }

124 Incremental Builds Are File-Based struct Point { let point = Point(x: 3.0, y: 4.0) var x, y: Double init(x: Double, y: Double) { assert(x.isnormal) assert(y.isnormal) let distance = sqrt(point.x * point.x + point.y * point.y) self.x = x self.y = y } }

125 Incremental Builds Are File-Based Changes in function bodies do not affect other files struct Point { let point = Point(x: 3.0, y: 4.0) var x, y: Double init(x: Double, y: Double) { assert(x.isfinite) assert(y.isfinite) let distance = sqrt(point.x * point.x + point.y * point.y) self.x = x self.y = y } }

126 Incremental Builds Are File-Based Changes in function bodies do not affect other files struct Point { let point = Point(x: 3.0, y: 4.0) var x, y: Double init(x: Double, y: Double) { assert(x.isfinite) assert(y.isfinite) let distance = sqrt(point.x * point.x + point.y * point.y) self.x = x self.y = y } }

127 Incremental Builds Are File-Based Unrelated changes outside function bodies can still result in rebuilding struct Point { let point = Point(x: 3.0, y: 4.0) var x, y: Double init(x: Double, y: Double) { assert(x.isfinite) assert(y.isfinite) let distance = sqrt(point.x * point.x + point.y * point.y) self.x = x self.y = y } } struct PathSegment { var start, end: Point }

128 Incremental Builds Are File-Based Unrelated changes outside function bodies can still result in rebuilding struct Point { let point = Point(x: 3.0, y: 4.0) var x, y: Double init(x: Double, y: Double) { assert(x.isfinite) assert(y.isfinite) let distance = sqrt(point.x * point.x + point.y * point.y) self.x = x self.y = y } } struct PathSegment { var start, end: Point }

129 Dependencies Within a Target Are Per-File GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

130 Dependencies Within a Target Are Per-File GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

131 Dependencies Within a Target Are Per-File GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

132 Dependencies Within a Target Are Per-File GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

133 Dependencies Within a Target Are Per-File GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

134 Cross-Target Dependencies Are Coarse-Grained GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

135 Cross-Target Dependencies Are Coarse-Grained GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

136 Cross-Target Dependencies Are Coarse-Grained GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

137 Cross-Target Dependencies Are Coarse-Grained GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

138 Cross-Target Dependencies Are Coarse-Grained GameView.swift SyncManager.swift MenuController.swift GameAI.swift PlayerState.swift

139 Swift Dependency Rules

140 Swift Dependency Rules Compiler must be conservative

141 Swift Dependency Rules Compiler must be conservative Changes in function bodies do not affect the file s interface

142 Swift Dependency Rules Compiler must be conservative Changes in function bodies do not affect the file s interface Dependencies within a module are per-file

143 Swift Dependency Rules Compiler must be conservative Changes in function bodies do not affect the file s interface Dependencies within a module are per-file Dependencies across targets are for the whole target

144 Limiting Your Objective-C/Swift Interface Reducing the work on rebuilds

145 Mixed-Source App Targets

146 Mixed-Source App Targets

147 Mixed-Source App Targets Bridging header

148 Mixed-Source App Targets Bridging header

149 Mixed-Source App Targets Bridging header Generated header

150 Mixed-Source App Targets Bridging header Generated header

151 Mixed-Source App Targets Bridging header Generated header

152 Mixed-Source App Targets Bridging header Generated header

153 Mixed-Source App Targets Bridging header Generated header

154 Keep Your Generated Header Minimal Use private when possible class MainViewController: UIViewController var statusfield: func close(_ sender: Any?) { } }

155 Keep Your Generated Header Minimal Use private when possible class MainViewController: UIViewController var statusfield: func close(_ sender: Any?) { } IBOutlet UITextField *statusfield; - (IBAction)close:(id)sender;

156 Keep Your Generated Header Minimal Use private when possible class MainViewController: UIViewController private var statusfield: private func close(_ sender: Any?) { } IBOutlet UITextField *statusfield; - (IBAction)close:(id)sender;.

157 Keep Your Generated Header Minimal Use private when possible class MainViewController: UIViewController private var statusfield: private func close(_ sender: Any?) { } }

158 Keep Your Generated Header Minimal Use private when possible class MainViewController: UIViewController private var statusfield: private func close(_ sender: Any?) { } }

159 Keep Your Generated Header Minimal Use private when func keyboardwillshow(_: Notification) { }. // Important keyboard setup code here. // NotificationCenter.default.addObserver(self, selector: #selector(keyboardwillshow(_:)), )

160 Keep Your Generated Header Minimal Use private when private func keyboardwillshow(_: Notification) { }. // Important keyboard setup code here. // NotificationCenter.default.addObserver(self, selector: #selector(keyboardwillshow(_:)), )

161 Keep Your Generated Header Minimal Use block-based APIs self.observer = NotificationCenter.default.addObserver( forname: UIKeyboardWillShow, object: nil, queue: nil) { // Important keyboard setup code here. }.

162 Keep Your Generated Header Minimal Migrate to Swift 4

163 Keep Your Generated Header Minimal Turn off Swift Inference

164 Keep Your Generated Header Minimal Turn off Swift Inference

165 Keep Your Bridging Header Minimal // Use this file to import your target's public headers that // you would like to expose to Swift. MyApp-Bridging-Header.h #import "MyBackendAPI.h" #import "MyViewController.h" #import "MyUserDefaultsHelpers.h"

166 Keep Your Bridging Header Minimal // Use this file to import your target's public headers that // you would like to expose to Swift. MyApp-Bridging-Header.h #import "MyBackendAPI.h" #import "MyViewController.h" #import "MyUserDefaultsHelpers.h"

167 Keep Your Bridging Header Minimal #import <UIKit/UIKit.h> #import "MyNetworkManager.h" MyViewController: (nonnull) MyNetworkManager *networkmanager;

168 Keep Your Bridging Header Minimal #import <UIKit/UIKit.h> #import "MyNetworkManager.h" MyViewController: (nonnull) MyNetworkManager *networkmanager;

169 Keep Your Bridging Header Minimal #import <UIKit/UIKit.h> #import "MyNetworkManager.h" MyViewController: (nonnull) MyNetworkManager *networkmanager;

170 Keep Your Bridging Header Minimal Use categories to break up your interface #import <UIKit/UIKit.h> #import MyViewController: UIViewController (nonnull) MyNetworkManager *networkmanager;

171 Keep Your Bridging Header Minimal Use categories to break up your interface #import <UIKit/UIKit.h> #import MyViewController: UIViewController (nonnull) MyNetworkManager *networkmanager; #import MyViewController MyViewController+Internal.h

172 Keep Your Bridging Header Minimal Use categories to break up your interface #import <UIKit/UIKit.h> #import MyViewController: UIViewController (nonnull) MyNetworkManager *networkmanager; #import MyViewController MyViewController+Internal.h

173 Keep Your Bridging Header Minimal Use categories to break up your interface #import MyViewController: UIViewController // #import "MyNetworkManager.h" #import MyViewController (nonnull) MyNetworkManager *networkmanager;

174 Keep Your Bridging Header Minimal Use categories to break up your interface #import MyViewController: UIViewController // #import "MyNetworkManager.h" #import MyViewController (nonnull) MyNetworkManager *networkmanager;

175 Less Content, Fewer Changes, Faster Builds Bridging header Generated header

176 Less Content, Fewer Changes, Faster Builds Bridging header Generated header

177 Less Content, Fewer Changes, Faster Builds Bridging header Generated header

178 Summary

179 Building Faster in Xcode Increasing Build Efficiency Reducing the Work on Rebuilds Parallelizing your build process Declaring script inputs and outputs Measuring your build time Understanding dependencies in Swift Dealing with complex expressions Limiting your Objective-C/Swift interface

180 More Information Building Your App with Xcode Technology Lab 8 Thursday 12:00PM Building Your App with Xcode Technology Lab 8 Friday 3:00PM

181

What s New in Xcode App Signing

What s New in Xcode App Signing Developer Tools #WWDC16 What s New in Xcode App Signing Developing and distributing Session 401 Joshua Pennington Tools Engineering Manager Itai Rom Tools Engineer 2016 Apple Inc. All rights reserved.

More information

Implementing UI Designs in Interface Builder

Implementing UI Designs in Interface Builder Developer Tools #WWDC15 Implementing UI Designs in Interface Builder Session 407 Kevin Cathey Interface Builder Engineer Tony Ricciardi Interface Builder Engineer 2015 Apple Inc. All rights reserved. Redistribution

More information

ios Application Development Lecture 2: Seminar and Unit 1

ios Application Development Lecture 2: Seminar and Unit 1 ios Application Development Lecture 2: Seminar and Unit 1 Dr. Simon Völker & Philipp Wacker Media Computing Group RWTH Aachen University Winter Semester 2017/2018 http://hci.rwth-aachen.de/ios Swift 18

More information

ITP 342 Mobile App Dev. Connections

ITP 342 Mobile App Dev. Connections ITP 342 Mobile App Dev Connections User Interface Interactions First project displayed information to the user, but there was no interaction. We want the users of our app to touch UI components such as

More information

Introducing Password AutoFill for Apps

Introducing Password AutoFill for Apps Session App Frameworks #WWDC17 Introducing Password AutoFill for Apps Reducing friction for your users 206 Ricky Mondello, ios Engineer 2017 Apple Inc. All rights reserved. Redistribution or public display

More information

Thread Sanitizer and Static Analysis

Thread Sanitizer and Static Analysis Developer Tools #WWDC16 Thread Sanitizer and Static Analysis Help with finding bugs in your code Session 412 Anna Zaks Manager, Program Analysis Team Devin Coughlin Engineer, Program Analysis Team 2016

More information

Extending Your Apps with SiriKit

Extending Your Apps with SiriKit App Frameworks #WWDC16 Extending Your Apps with SiriKit Session 225 Vineet Khosla SiriKit Engineering Diana Huang SiriKit Engineering Scott Andrus SiriKit Engineering 2016 Apple Inc. All rights reserved.

More information

What s New in Testing

What s New in Testing #WWDC18 What s New in Testing Session 403 Honza Dvorsky, Xcode Engineer Ethan Vaughan, Xcode Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Optimizing Swift Performance Session 409

Optimizing Swift Performance Session 409 Developer Tools #WWDC15 Optimizing Swift Performance Session 409 Nadav Rotem Manager, Swift Performance Team Michael Gottesman Engineer, Swift Performance Team Joe Grzywacz Engineer, Performance Tools

More information

Using and Extending the Xcode Source Editor

Using and Extending the Xcode Source Editor Developer Tools #WWDC16 Using and Extending the Xcode Source Editor Session 414 Mike Swingler Xcode Infrastructure and Editors Chris Hanson Xcode Infrastructure and Editors 2016 Apple Inc. All rights reserved.

More information

Enabling Your App for CarPlay

Enabling Your App for CarPlay Session App Frameworks #WWDC17 Enabling Your App for CarPlay 719 Albert Wan, CarPlay Engineering 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Mastering UIKit on tvos

Mastering UIKit on tvos App Frameworks #WWDC16 Mastering UIKit on tvos Session 210 Justin Voss UIKit Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from

More information

Mastering Drag and Drop

Mastering Drag and Drop Session App Frameworks #WWDC17 Mastering Drag and Drop 213 Tom Adriaenssen, UIKit Wenson Hsieh, WebKit Robb Böhnke, UIKit 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

Enhancing your apps for the next dimension of touch

Enhancing your apps for the next dimension of touch App Frameworks #WWDC16 A Peek at 3D Touch Enhancing your apps for the next dimension of touch Session 228 Tyler Fox UIKit Frameworks Engineer Peter Hajas UIKit Frameworks Engineer 2016 Apple Inc. All rights

More information

Finding Bugs Using Xcode Runtime Tools

Finding Bugs Using Xcode Runtime Tools Session Developer Tools #WWDC17 Finding Bugs Using Xcode Runtime Tools 406 Kuba Mracek, Program Analysis Engineer Vedant Kumar, Compiler Engineer 2017 Apple Inc. All rights reserved. Redistribution or

More information

lecture 11 Advanced Swift

lecture 11 Advanced Swift lecture 11 Advanced Swift cs198-001 : spring 2018 1 Attendances Will be posting sheet on Piazza this week Check that we ve accounted for all of your attendances! Make a private piazza post if there is

More information

Quick Interaction Techniques for watchos

Quick Interaction Techniques for watchos App Frameworks #WWDC16 Quick Interaction Techniques for watchos Session 211 Tom Witkin watchos Engineer Miguel Sanchez watchos Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display

More information

App. Chapter 19 App. App (ViewController) App. Single View Application Single View Application View. (View Controller)

App. Chapter 19 App. App (ViewController) App. Single View Application Single View Application View. (View Controller) Chapter 19 App App (ViewController) App 19.1 App App Single View Application Single View Application View Controller View Controller Label Button Button (View Controller) 2 View Controller Utility Area

More information

What s New in watchos

What s New in watchos Session App Frameworks #WWDC17 What s New in watchos 205 Ian Parks, watchos Engineering 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from

More information

Introducing On Demand Resources

Introducing On Demand Resources App Frameworks #WWDC15 Introducing On Demand Resources An element of App Thinning Session 214 Steve Lewallen Frameworks Engineering Tony Parker Cocoa Frameworks 2015 Apple Inc. All rights reserved. Redistribution

More information

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer App Frameworks #WWDC16 What s New in tvos Session 206 Hans Kim tvos Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Welcome

More information

Engineering for Testability

Engineering for Testability Session Developer Tools #WWDC17 Engineering for Testability 414 Brian Croom, Xcode Engineer Greg Tracy, Xcode Engineer 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

Integrating Apps and Content with AR Quick Look

Integrating Apps and Content with AR Quick Look Session #WWDC18 Integrating Apps and Content with AR Quick Look 603 David Lui, ARKit Engineering Dave Addey, ARKit Engineering 2018 Apple Inc. All rights reserved. Redistribution or public display not

More information

Improving your Existing Apps with Swift

Improving your Existing Apps with Swift Developer Tools #WWDC15 Improving your Existing Apps with Swift Getting Swifty with It Session 403 Woody L. in the Sea of Swift 2015 Apple Inc. All rights reserved. Redistribution or public display not

More information

Advanced Notifications

Advanced Notifications System Frameworks #WWDC16 Advanced Notifications Session 708 Michele Campeotto ios Notifications 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

WatchKit In-Depth, Part 2

WatchKit In-Depth, Part 2 App Frameworks #WWDC15 WatchKit In-Depth, Part 2 Session 208 Nathan de Vries watchos Engineer Chloe Chang watchos Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

Swift. Introducing swift. Thomas Woodfin

Swift. Introducing swift. Thomas Woodfin Swift Introducing swift Thomas Woodfin Content Swift benefits Programming language Development Guidelines Swift benefits What is Swift Benefits What is Swift New programming language for ios and OS X Development

More information

Understanding Undefined Behavior

Understanding Undefined Behavior Session Developer Tools #WWDC17 Understanding Undefined Behavior 407 Fred Riss, Clang Team Ryan Govostes, Security Engineering and Architecture Team Anna Zaks, Program Analysis Team 2017 Apple Inc. All

More information

Media and Gaming Accessibility

Media and Gaming Accessibility Session System Frameworks #WWDC17 Media and Gaming Accessibility 217 Greg Hughes, Software Engineering Manager Charlotte Hill, Software Engineer 2017 Apple Inc. All rights reserved. Redistribution or public

More information

Mobile Development - Lab 2

Mobile Development - Lab 2 Mobile Development - Lab 2 Objectives Illustrate the delegation mechanism through examples Use a simple Web service Show how to simply make a hybrid app Display data with a grid layout Delegation pattern

More information

Advances in AVFoundation Playback

Advances in AVFoundation Playback Media #WWDC16 Advances in AVFoundation Playback Waiting, looping, switching, widening, optimizing Session 503 Sam Bushell Media Systems Architect 2016 Apple Inc. All rights reserved. Redistribution or

More information

Automatic Strong Passwords and Security Code AutoFill

Automatic Strong Passwords and Security Code AutoFill Session #WWDC18 Automatic Strong Passwords and Security Code AutoFill 204 Chelsea Pugh, ios Engineer Reza Abbasian, ios Engineer Harris Papadopoulos, ios Engineer 2018 Apple Inc. All rights reserved. Redistribution

More information

What s New in tvos 12

What s New in tvos 12 #WWDC18 What s New in tvos 12 Session 208 Hans Kim, tvos Engineering 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Agenda Agenda

More information

ITP 342 Mobile App Dev. Connections

ITP 342 Mobile App Dev. Connections ITP 342 Mobile App Dev Connections User Interface Interactions First project displayed information to the user, but there was no interaction. We want the users of our app to touch UI components such as

More information

Data Delivery with Drag and Drop

Data Delivery with Drag and Drop Session App Frameworks #WWDC17 Data Delivery with Drag and Drop 227 Dave Rahardja, UIKit Tanu Singhal, UIKit 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without

More information

Using Grouped Notifications

Using Grouped Notifications #WWDC18 Using Grouped Notifications Session 711 Michele Campeotto, ios User Notifications 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

What s New in SpriteKit

What s New in SpriteKit Graphics and Games #WWDC16 What s New in SpriteKit Session 610 Ross Dexter Games Technologies Engineer Clément Boissière Games Technologies Engineer 2016 Apple Inc. All rights reserved. Redistribution

More information

iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5

iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5 iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5 Questions? Announcements Assignment #1 due this evening by 11:59pm Remember, if you wish to use a free late you must email me before

More information

Getting the Most out of Playgrounds in Xcode

Getting the Most out of Playgrounds in Xcode #WWDC18 Getting the Most out of Playgrounds in Xcode Session 402 Tibet Rooney-Rabdau, Xcode Engineer Alex Brown, Core OS Engineer TJ Usiyan, Xcode Engineer 2018 Apple Inc. All rights reserved. Redistribution

More information

Introduction to Siri Shortcuts

Introduction to Siri Shortcuts #WWDC8 Introduction to Siri Shortcuts Session 2 Ari Weinstein, Siri Willem Mattelaer, Siri 208 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

User Interfaces. Lecture 15. Application Programming on Mac OS. Hamza Bennani September 4, 2018

User Interfaces. Lecture 15. Application Programming on Mac OS. Hamza Bennani September 4, 2018 User Interfaces Lecture 15 Application Programming on Mac OS Hamza Bennani hamza@hamzabennani.com September 4, 2018 Logistics Office hours: Tue/Thu, 2pm to 3pm. Office: 250 Geoff Wyvill. Acknowledgment:

More information

Monetize and Promote Your App with iad

Monetize and Promote Your App with iad Media #WWDC15 Monetize and Promote Your App with iad From design to launch Session 503 Carol Teng Shashank Phadke 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without

More information

Core ML in Depth. System Frameworks #WWDC17. Krishna Sridhar, Core ML Zach Nation, Core ML

Core ML in Depth. System Frameworks #WWDC17. Krishna Sridhar, Core ML Zach Nation, Core ML System Frameworks #WWDC17 Core ML in Depth Krishna Sridhar, Core ML Zach Nation, Core ML 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from

More information

Seamless Linking to Your App

Seamless Linking to Your App App Frameworks #WWDC15 Seamless Linking to Your App Session 509 Conrad Shultz Safari and WebKit Software Engineer Jonathan Grynspan Core Services Software Engineer 2015 Apple Inc. All rights reserved.

More information

Building Apps with Dynamic Type

Building Apps with Dynamic Type Session App Frameworks #WWDC17 Building Apps with Dynamic Type 245 Clare Kasemset, Software Engineering Manager Nandini Sundar, Software Engineer 2017 Apple Inc. All rights reserved. Redistribution or

More information

What s New in LLDB. Debug your way to fame and glory #WWDC15. Developer Tools. Session 402

What s New in LLDB. Debug your way to fame and glory #WWDC15. Developer Tools. Session 402 Developer Tools #WWDC15 What s New in LLDB Debug your way to fame and glory Session 402 Kate Stone Software Behavioralist Sean Callanan Master of Expressions Enrico Granata Data Wizard 2015 Apple Inc.

More information

What's New in Core Spotlight

What's New in Core Spotlight Session System Frameworks #WWDC17 What's New in Core Spotlight Search on macos and ios 231 John Hörnkvist, Spotlight Lyn Fong, Spotlight 2017 Apple Inc. All rights reserved. Redistribution or public display

More information

Modern User Interaction on ios

Modern User Interaction on ios App Frameworks #WWDC17 Modern User Interaction on ios Mastering the UIKit UIGesture System Session 219 Dominik Wagner, UIKit Engineer Michael Turner, UIKit Engineer Glen Low, UIKit Engineer 2017 Apple

More information

IBM Case Manager Mobile Version SDK for ios Developers' Guide IBM SC

IBM Case Manager Mobile Version SDK for ios Developers' Guide IBM SC IBM Case Manager Mobile Version 1.0.0.5 SDK for ios Developers' Guide IBM SC27-4582-04 This edition applies to version 1.0.0.5 of IBM Case Manager Mobile (product number 5725-W63) and to all subsequent

More information

Apple Watch Docs. Release 0.1. Michael Hahn

Apple Watch Docs. Release 0.1. Michael Hahn Apple Watch Docs Release 0.1 Michael Hahn Nov 20, 2017 Contents 1 First Watch Glance 3 1.1 Create an iphone App.......................................... 3 1.2 Add WatchKit Targets..........................................

More information

Your Apps and the Future of macos Security

Your Apps and the Future of macos Security #WWDC18 Your Apps and the Future of macos Security Pierre-Olivier Martel, Security Engineering Manager Kelly Yancey, OS Security Garrett Jacobson, Trusted Execution 2018 Apple Inc. All rights reserved.

More information

Building the App - Part 5 - Adding a Link

Building the App - Part 5 - Adding a Link Unit 4 - Coding For Your App Copy and Paste the code below exactly where the tutorials tell you. DO NOT COPY TEXT IN RED. Building the App - Part 5 - Adding a Link XCODE 7 @IBAction func Button1(_ sender:

More information

Porting Objective-C to Swift. Richard Ekle

Porting Objective-C to Swift. Richard Ekle Porting Objective-C to Swift Richard Ekle rick@ekle.org Why do we need this? 1.2 million apps in the ios App Store http://www.statista.com/statistics/276623/numberof-apps-available-in-leading-app-stores/

More information

What s New in Notifications

What s New in Notifications System Frameworks #WWDC15 What s New in Notifications Session 720 Michele Campeotto ios Notifications Gokul Thirumalai Apple Push Notification Service 2015 Apple Inc. All rights reserved. Redistribution

More information

What s New in Core Data?

What s New in Core Data? Session App Frameworks #WWDC17 What s New in Core? Persisting since 2004 210 Melissa Turner, Core Engineer Rishi Verma, Core Engineer 2017 Apple Inc. All rights reserved. Redistribution or public display

More information

Cocoa Touch Best Practices

Cocoa Touch Best Practices App Frameworks #WWDC15 Cocoa Touch Best Practices Session 231 Luke Hiesterman UIKit Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

ios Tic Tac Toe Game John Robinson at Rowan University

ios Tic Tac Toe Game John Robinson at Rowan University ios Tic Tac Toe Game John Robinson at Rowan University Agenda Day 3 Introduction to Swift and Xcode Creating the Tic Tac Toe GUI Lunch Break Writing the Tic Tac Toe Game Code RAMP Wrap up Process for Developing

More information

Building for Voice with Siri Shortcuts

Building for Voice with Siri Shortcuts #WWDC18 Building for Voice with Siri Shortcuts Session 214 Amit Jain, Siri Ayaka Nonaka, Siri 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Metal for Ray Tracing Acceleration

Metal for Ray Tracing Acceleration Session #WWDC18 Metal for Ray Tracing Acceleration 606 Sean James, GPU Software Engineer Wayne Lister, GPU Software Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

What s New in Audio. Media #WWDC17. Akshatha Nagesh, AudioEngine-eer Béla Balázs, Audio Artisan Torrey Holbrook Walker, Audio/MIDI Black Ops

What s New in Audio. Media #WWDC17. Akshatha Nagesh, AudioEngine-eer Béla Balázs, Audio Artisan Torrey Holbrook Walker, Audio/MIDI Black Ops Session Media #WWDC17 What s New in Audio 501 Akshatha Nagesh, AudioEngine-eer Béla Balázs, Audio Artisan Torrey Holbrook Walker, Audio/MIDI Black Ops 2017 Apple Inc. All rights reserved. Redistribution

More information

Getting to Know Swift Package Manager

Getting to Know Swift Package Manager #WWDC18 Getting to Know Swift Package Manager Session 411 Rick Ballard, SwiftPM Release Manager Boris Buegling, Developer Tools Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display

More information

Announcements. Today s Topics

Announcements. Today s Topics Announcements Lab 2 is due tonight by 11:59 PM Late policy is 10% of lab total per day late So -7.5 points per day late for lab 2 Labs 3 and 4 are posted on the course website Extensible Networking Platform

More information

Getting the Most Out of HealthKit

Getting the Most Out of HealthKit App Frameworks #WWDC16 Getting the Most Out of HealthKit What s new and best practices Session 209 Matthew Salesi ios Software Engineer Joefrey Kibuule ios Software Engineer 2016 Apple Inc. All rights

More information

Working with Metal Overview

Working with Metal Overview Graphics and Games #WWDC14 Working with Metal Overview Session 603 Jeremy Sandmel GPU Software 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Document Version Date: 1st March, 2015

Document Version Date: 1st March, 2015 7 Minute Fitness: ios(swift) Application Document Version 1.0.1 Date: 1st March, 2015 2 [7 MINUTE FITNESS: APP DOCUMENTATION] Important Notes:... 5 AppDelegate Class Reference... 6 Tasks... 6 Instance

More information

What s New in imessage Apps

What s New in imessage Apps Session App Frameworks #WWDC17 What s New in imessage Apps 234 Eugene Bistolas, Messages Engineer Jay Chae, Messages Engineer Stephen Lottermoser, Messages Engineer 2017 Apple Inc. All rights reserved.

More information

Localizing with Xcode 9

Localizing with Xcode 9 Session Developer Tools #WWDC17 Localizing with Xcode 9 401 Sara Radi, Software Engineer Aya Siblini, Software Engineer Chris Hanson, Software Engineer 2017 Apple Inc. All rights reserved. Redistribution

More information

Advanced Scrollviews and Touch Handling Techniques

Advanced Scrollviews and Touch Handling Techniques Frameworks #WWDC14 Advanced Scrollviews and Touch Handling Techniques Session 235 Josh Shaffer ios Apps and Frameworks Engineer Eliza Block ios Apps and Frameworks Engineer 2014 Apple Inc. All rights reserved.

More information

UI Design and Storyboarding

UI Design and Storyboarding UI Design and Storyboarding Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Outline Model-View-Controller

More information

I, J. Key-value observing (KVO), Label component, 32 text property, 39

I, J. Key-value observing (KVO), Label component, 32 text property, 39 Index A Abstract factory pattern, 207 concrete factory, 213 examples in Cocoa, 227 groups of objects, 212 implementing, 213 abstract factories, 214 concrete factories, 214 215 operations, 212 213 pitfalls,

More information

Swift API Design Guidelines

Swift API Design Guidelines Developer Tools #WWDC16 Swift API Design Guidelines The Grand Renaming Session 403 Doug Gregor Swift Engineer Michael Ilseman Swift Engineer 2016 Apple Inc. All rights reserved. Redistribution or public

More information

Topics in Mobile Computing

Topics in Mobile Computing Topics in Mobile Computing Workshop 1I - ios Fundamental Prepared by Y.H. KWOK What is ios? From Wikipedia (http://en.wikipedia.org/wiki/ios): ios is an operating system for iphone, ipad and Apple TV.

More information

Creating Audio Apps for watchos

Creating Audio Apps for watchos Session #WWDC18 Creating Audio Apps for watchos 504 Neil Desai, watchos Frameworks Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

ios Core Data Example Application

ios Core Data Example Application ios Core Data Example Application The Core Data framework provides an abstract, object oriented interface to database storage within ios applications. This does not require extensive knowledge of database

More information

iphone Application Programming Lab 2: MVC and Delegation + A01 discussion

iphone Application Programming Lab 2: MVC and Delegation + A01 discussion Lab 2: MVC and Delegation + A01 discussion Nur Al-huda Hamdan RWTH Aachen University Winter Semester 2015/2016 http://hci.rwth-aachen.de/iphone Learning Objectives Discuss A01 + demo Concepts: debugging

More information

Assignment I: Concentration

Assignment I: Concentration Assignment I: Concentration Objective The goal of this assignment is to recreate the demonstration given in lecture and then make some small enhancements. It is important that you understand what you are

More information

New UIKit Support for International User Interfaces

New UIKit Support for International User Interfaces App Frameworks #WWDC15 New UIKit Support for International User Interfaces Session 222 Sara Radi Internationalization Software Engineer Aaltan Ahmad Internationalization Software Engineer Paul Borokhov

More information

What s New in Swift #WWDC18. Ted Kremenek, Languages & Runtimes Manager Slava Pestov, Swift Compiler Engineer

What s New in Swift #WWDC18. Ted Kremenek, Languages & Runtimes Manager Slava Pestov, Swift Compiler Engineer Session #WWDC18 What s New in Swift 401 Ted Kremenek, Languages & Runtimes Manager Slava Pestov, Swift Compiler Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

Questions. Exams: no. Get by without own Mac? Why ios? ios vs Android restrictions. Selling in App store how hard to publish? Future of Objective-C?

Questions. Exams: no. Get by without own Mac? Why ios? ios vs Android restrictions. Selling in App store how hard to publish? Future of Objective-C? Questions Exams: no Get by without own Mac? Why ios? ios vs Android restrictions Selling in App store how hard to publish? Future of Objective-C? Grading: Lab/homework: 40%, project: 40%, individual report:

More information

SceneKit: What s New Session 604

SceneKit: What s New Session 604 Graphics and Games #WWDC17 SceneKit: What s New Session 604 Thomas Goossens, SceneKit engineer Amaury Balliet, SceneKit engineer Anatole Duprat, SceneKit engineer Sébastien Métrot, SceneKit engineer 2017

More information

What s New in CloudKit

What s New in CloudKit System Frameworks #WWDC15 What s New in CloudKit Session 704 Olivier Bonnet icloud Client Eric Krugler icloud Server 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

What s New in MapKit. App Frameworks #WWDC17. Fredrik Olsson

What s New in MapKit. App Frameworks #WWDC17. Fredrik Olsson Session App Frameworks #WWDC17 What s New in MapKit 237 Fredrik Olsson 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. MKMapView.mapType.standard

More information

Introducing the Contacts Framework

Introducing the Contacts Framework App Frameworks #WWDC15 Introducing the Contacts Framework For OS X, ios, and watchos Session 223 Bruce Stadnyk ios Contacts Engineer Dave Dribin OS X Contacts Engineer Julien Robert ios Contacts Engineer

More information

App Extension Best Practices

App Extension Best Practices App Frameworks #WWDC15 App Extension Best Practices Session 224 Sophia Teutschler UIKit Engineer Ian Baird CoreOS Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

JavaScript for Automation

JavaScript for Automation Services #WWDC14 JavaScript for Automation Session 306 Sal Soghoian Product Manger Automation Technologies 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Mobile Application Programming. Swift Classes

Mobile Application Programming. Swift Classes Mobile Application Programming Swift Classes Swift Top-Level Entities Like C/C++ but unlike Java, Swift allows declarations of functions, variables, and constants at the top-level, outside any class declaration

More information

ios Accessibility Developing for everyone Session 201 Ian Fisch ios Accessibility

ios Accessibility Developing for everyone Session 201 Ian Fisch ios Accessibility App Frameworks #WWDC15 ios Accessibility Developing for everyone Session 201 Ian Fisch ios Accessibility 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Leveraging Touch Input on ios

Leveraging Touch Input on ios App Frameworks #WWDC16 Leveraging Touch Input on ios And getting the most out of Apple Pencil Session 220 Dominik Wagner UIKit Engineer 2016 Apple Inc. All rights reserved. Redistribution or public display

More information

SceneKit in Swift Playgrounds

SceneKit in Swift Playgrounds Session Graphics and Games #WWDC17 SceneKit in Swift Playgrounds 605 Michael DeWitt, Gem Collector Lemont Washington, Draw Call Blaster 2017 Apple Inc. All rights reserved. Redistribution or public display

More information

1 Build Your First App. The way to get started is to quit talking and begin doing. Walt Disney

1 Build Your First App. The way to get started is to quit talking and begin doing. Walt Disney 1 Build Your First App The way to get started is to quit talking and begin doing. Walt Disney Copyright 2015 AppCoda Limited All rights reserved. Please do not distribute or share without permission. No

More information

S A M P L E C H A P T E R

S A M P L E C H A P T E R SAMPLE CHAPTER Anyone Can Create an App by Wendy L. Wise Chapter 5 Copyright 2017 Manning Publications brief contents PART 1 YOUR VERY FIRST APP...1 1 Getting started 3 2 Building your first app 14 3 Your

More information

Managing Documents In Your ios Apps

Managing Documents In Your ios Apps Session #WWDC18 Managing Documents In Your ios Apps 216 Brandon Tennant, Software Engineer Thomas Deniau, Software Engineer Rony Fadel, Software Engineer 2018 Apple Inc. All rights reserved. Redistribution

More information

What s New in ARKit 2

What s New in ARKit 2 Session #WWDC18 What s New in ARKit 2 602 Arsalan Malik, ARKit Engineer Reinhard Klapfer, ARKit Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written

More information

Introducing the Photos Frameworks

Introducing the Photos Frameworks Media #WWDC14 Introducing the Photos Frameworks Session 511 Adam Swift ios Photos Frameworks 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017 Stanford Developing Applications for ios Today Error Handling in Swift try Extensions A simple, powerful, but easily overused code management syntax Protocols Last (but certainly not least important) typing

More information

News- ipad: ios(swift) Application

News- ipad: ios(swift) Application News- ipad: ios(swift) Application Document Version 1.0.1 Date: 9 th Nov, 2014 2 [NEWS- IPAD: APP DOCUMENTATION] Important Notes:... 6 AppDelegate Class Reference... 7 Tasks... 7 Instance Methods... 7

More information

Designing for Apple Watch

Designing for Apple Watch Design #WWDC15 Designing for Apple Watch Session 802 Mike Stern User Experience Evangelist 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Using Swift with Cocoa and Objective-C

Using Swift with Cocoa and Objective-C Using Swift with Cocoa and Objective-C Contents Getting Started 5 Basic Setup 6 Setting Up Your Swift Environment 6 Understanding the Swift Import Process 7 Interoperability 9 Interacting with Objective-C

More information

Core Data Best Practices

Core Data Best Practices #WWDC18 Core Data Best Practices Session 224 Scott Perry, Engineer Nick Gillett, Engineer 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission

More information

Xcode 6 and ios 8 What s New for Software Developers

Xcode 6 and ios 8 What s New for Software Developers Xcode 6 and ios 8 What s New for Software Developers August 2014 Norman McEntire! norman.mcentire@servin.com Slides and Video of this presentation will be posted on Tuesday Aug 26 here: http://servin.com!1

More information