126
© 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns Building apps, it’s not just for breakfast anymore Session 224 Bill Dudney UIKit Engineer Frameworks

Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

© 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

#WWDC14

Core iOS ApplicationArchitectural PatternsBuilding apps, it’s not just for breakfast anymore

Session 224 Bill Dudney UIKit Engineer

Frameworks

Page 2: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Introduction

Page 3: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Introduction

1 Common Patterns

Page 4: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Introduction

1 Common Patterns

2 Use Them in Your Code

Page 5: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Common PatternsUIKit and beyond

Page 6: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Common Patterns

Page 7: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Common Patterns

Page 8: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Target/Action

Page 9: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Target/Action

A consistent way to connect controls to custom logic

Page 10: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Making a Connection

Page 11: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Target/ActionSubtitle

Page 12: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Target/ActionSubtitle

Cancel Send

Page 13: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Target/ActionSubtitle

Cancel Send

Send Message

Page 14: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Target/ActionSubtitle

UIBarButtonItem

UIButton

Page 15: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Target/ActionControls

Control

Page 16: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

target

action

Target/ActionControls

Control Object

Page 17: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Target/ActionGesture Recognizers

Gesture Recognizer Objectaction

target

Page 18: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Target/Action

Page 19: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder Chain

Page 20: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder Chain

Handle events without knowledge of which object will be used

Page 21: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder Chain

Initiator

Page 22: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder Chain

ResponderactionInitiator

Page 23: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder Chain

RespondernextResponder

ResponderactionInitiator

Page 24: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder Chain

RespondernextResponder

RespondernextResponder

ResponderactionInitiator

Page 25: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder ChainResponder

nextResponder

RespondernextResponder

RespondernextResponder

ResponderactionInitiator

Page 26: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder ChainMotion events

Page 27: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder ChainMotion events

Page 28: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder ChainMotion events

motionBegan:withEvent:motionEnded:withEvent:motionCancelled:withEvent:

Responder

nextResponder

Page 29: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder ChainAll applications

ViewView Controller

Window

Application AppDelegate

Page 30: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Responder Chain

Page 31: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Composite

Page 32: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

CompositeView hierarchy

Manipulate a group of objects as a single object

Page 33: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

CompositeView hierarchy

View

Page 34: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

CompositeView hierarchy

View

View

Page 35: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

CompositeView hierarchy

View

View

Page 36: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

CompositeView hierarchy

View

View

Page 37: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

View

View

CompositeView hierarchy

Page 38: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

CompositeView hierarchy

View

View

Page 39: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

CompositeResponder chain

View

View

Page 40: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

CompositeUIDynamicBehavior

Dynamic Behavior

Dynamic Behavior

Page 41: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Composite

Page 42: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Delegation

Page 43: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Delegation

Customize behavior without subclassing

Page 44: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

DelegationUIApplicationDelegate

UIApplication UIApplicationDelegate

Page 45: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Delegation

UIApplication UIApplicationDelegate

Page 46: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Delegation

UIApplication UIApplicationDelegate

AVAssetResourceLoader AVAssetResourceLoaderDelegate

CALayer CALayerDelegate

GKSession GKSessionDelegate

Page 47: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Delegation

Page 48: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Data Source

Page 49: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Data Source

Customize data retrieval without subclassing

Page 50: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Data SourceTable View

UITableView UITableViewDataSource

Page 51: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Data SourceIn UIKit

UITableView UITableViewDataSource

UICollectionView UICollectionViewDataSource

UIPageViewController UIPageViewControllerDataSource

UIPickerView UIPickerViewDataSource

Page 52: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

subclassing

Data Source

Customize data retrieval without

Page 53: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

subclassing

Data Source

Customize withoutbehavior

Page 54: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Data Source

Page 55: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Page 56: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Provide organizational structure to focus responsibilities

Page 57: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Model

View Controller

Page 58: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Model

View Controller

Page 59: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Model

View Controller

Page 60: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Controller

Model

View

Page 61: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Page 62: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Applying PatternsYour code—made better

Page 63: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Sample App

Page 64: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Application Definition Statement

Allow people to share simple, short updates about what is happening in their lives

Page 65: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Application Definition Statement

Allow people to share simple, short updates about what is happening in their lives

Page 66: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Application Definition Statement

Allow people to share simple, short updates about what is happening in their lives

Page 67: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Application Definition Statement

Allow people to share simple, short updates about what is happening in their lives

Page 68: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Qwinkle

Page 69: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Qwinkle

Networked

Lists of data

Good performance

Add an entry

Add photos

Mark items

Edit posts

Page 70: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Application Definition Statement

Allow people to share simple, short updates about what is happening in their lives

Page 71: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Qwinkle

Networked

Lists of data

Good performance

Add an entry

Add photos

Mark items

Edit posts

Page 72: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Building the App

Page 73: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns
Page 74: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-ControllerA guide to conceptualize our app

Model

View Controller

Page 75: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-ControllerA guide to conceptualize our app

Model

View Controller

Page 76: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

A user can specify an avatar

ModelApplication data

Page 77: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

ModelApplication data

A user can specify an avatar

A user can add an entry

A user can follow a friend

Page 78: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

ModelApplication data

Qwinker

Avatar

Qwink

Page 79: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-ControllerA guide to conceptualize our app

Model

View Controller

Page 80: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Scrolling

TableView

ViewNavBar

TableViewCellImageViewTextView

TableViewCellImageViewTextView

Button

Porchetta t-bone meatloaf bresaola, ball tip short loin pig jerky brisket tongue bacon shank salami. Sirloin landjaeger pastrami shoulder beef shank, corned beef tail strip steak.

Distillery non post-ironic occupy photo booth. Tousled church-key laborum, four loko pork belly Vinegar twee chia jean shorts commodo.

Turducken cow drumstick, turkey flank tenderloin short ribs venison leberkas. T-bone hamburger fatback drumstick bacon salami pork biltong leberkas short loin shankle doner tri-tip

Tattooed keytar veniam, try-hard vegan assumenda quinoa chillwave. Viral sed, accusamus 90's adipisicing gentrify iPhone ethical flexitarian.

Twee chia literally ugh swag. Flannel small batch fanny pack authentic Brooklyn cardigan letter-press

Composite

Page 81: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

CompositeScrolling

TableView

ViewNavBar

TableViewCellImageViewTextView

TableViewCellImageViewTextView

Button

Porchetta t-bone meatloaf bresaola, ball tip short loin pig jerky brisket tongue bacon shank salami. Sirloin landjaeger pastrami shoulder beef shank, corned beef tail strip steak.

Distillery non post-ironic occupy photo booth. Tousled church-key laborum, four loko pork belly Vinegar twee chia jean shorts commodo.

Turducken cow drumstick, turkey flank tenderloin short ribs venison leberkas. T-bone hamburger fatback drumstick bacon salami pork biltong leberkas short loin shankle doner tri-tip

Tattooed keytar veniam, try-hard vegan assumenda quinoa chillwave. Viral sed, accusamus 90's adipisicing gentrify iPhone ethical flexitarian.

Twee chia literally ugh swag. Flannel small batch fanny pack authentic Brooklyn cardigan letter-press

Page 82: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-ControllerA guide to conceptualize our app

Model

View Controller

Page 83: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleData source

Page 84: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleData source

UITableView

Page 85: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleData source

UITableView QwinksViewController

Page 86: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleData source

UITableView

UITableViewDataSource

QwinksViewController

Page 87: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleTarget/Action

QwinksViewController

Page 88: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-ControllerNetworking

Table View Controller

NSURLSession

Porchetta t-bone meatloaf bresaola, ball tip short loin pig jerky brisket tongue bacon shank salami. Sirloin landjaeger pastrami shoulder beef shank, corned beef tail strip steak.

Distillery non post-ironic occupy photo booth. Tousled church-key laborum, four loko pork belly Vinegar twee chia jean shorts commodo.

Turducken cow drumstick, turkey flank tenderloin short ribs venison leberkas. T-bone hamburger fatback drumstick bacon salami pork biltong leberkas short loin shankle doner tri-tip

Tattooed keytar veniam, try-hard vegan assumenda quinoa chillwave. Viral sed, accusamus 90's adipisicing gentrify iPhone ethical flexitarian.

Twee chia literally ugh swag. Flannel small batch fanny pack authentic Brooklyn cardigan letter-press

Page 89: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Porchetta t-bone meatloaf bresaola, ball tip short loin pig jerky brisket tongue bacon shank salami. Sirloin landjaeger pastrami shoulder beef shank, corned beef tail strip steak.

Distillery non post-ironic occupy photo booth. Tousled church-key laborum, four loko pork belly Vinegar twee chia jean shorts commodo.

Turducken cow drumstick, turkey flank tenderloin short ribs venison leberkas. T-bone hamburger fatback drumstick bacon salami pork biltong leberkas short loin shankle doner tri-tip

Tattooed keytar veniam, try-hard vegan assumenda quinoa chillwave. Viral sed, accusamus 90's adipisicing gentrify iPhone ethical flexitarian.

Twee chia literally ugh swag. Flannel small batch fanny pack authentic Brooklyn cardigan letter-press

Page 90: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

PublicTimelineViewController

Porchetta t-bone meatloaf bresaola, ball tip short loin pig jerky brisket tongue bacon shank salami. Sirloin landjaeger pastrami shoulder beef shank, corned beef tail strip steak.

Distillery non post-ironic occupy photo booth. Tousled church-key laborum, four loko pork belly Vinegar twee chia jean shorts commodo.

Turducken cow drumstick, turkey flank tenderloin short ribs venison leberkas. T-bone hamburger fatback drumstick bacon salami pork biltong leberkas short loin shankle doner tri-tip

Tattooed keytar veniam, try-hard vegan assumenda quinoa chillwave. Viral sed, accusamus 90's adipisicing gentrify iPhone ethical flexitarian.

Twee chia literally ugh swag. Flannel small batch fanny pack authentic Brooklyn cardigan letter-press

Page 91: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Table View PublicTimelineViewController

Porchetta t-bone meatloaf bresaola, ball tip short loin pig jerky brisket tongue bacon shank salami. Sirloin landjaeger pastrami shoulder beef shank, corned beef tail strip steak.

Distillery non post-ironic occupy photo booth. Tousled church-key laborum, four loko pork belly Vinegar twee chia jean shorts commodo.

Turducken cow drumstick, turkey flank tenderloin short ribs venison leberkas. T-bone hamburger fatback drumstick bacon salami pork biltong leberkas short loin shankle doner tri-tip

Tattooed keytar veniam, try-hard vegan assumenda quinoa chillwave. Viral sed, accusamus 90's adipisicing gentrify iPhone ethical flexitarian.

Twee chia literally ugh swag. Flannel small batch fanny pack authentic Brooklyn cardigan letter-press

Page 92: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Qwinker

Table View PublicTimelineViewController

Porchetta t-bone meatloaf bresaola, ball tip short loin pig jerky brisket tongue bacon shank salami. Sirloin landjaeger pastrami shoulder beef shank, corned beef tail strip steak.

Distillery non post-ironic occupy photo booth. Tousled church-key laborum, four loko pork belly Vinegar twee chia jean shorts commodo.

Turducken cow drumstick, turkey flank tenderloin short ribs venison leberkas. T-bone hamburger fatback drumstick bacon salami pork biltong leberkas short loin shankle doner tri-tip

Tattooed keytar veniam, try-hard vegan assumenda quinoa chillwave. Viral sed, accusamus 90's adipisicing gentrify iPhone ethical flexitarian.

Twee chia literally ugh swag. Flannel small batch fanny pack authentic Brooklyn cardigan letter-press

Page 93: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Model-View-Controller

Qwink

Entry View Qwink Entry View Controller

Gluten-free nesciunt swag kale chips assumenda, sed Reprehenderit bitters cillum excepteur. Hoodie trust fund pug ennui, lo-fi food truck est consectetur direct trade qui master cleanse biodiesel sint.

DoneCancel

Page 94: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleTarget/Action

PublicTimelineViewController

Page 95: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

PublicTimelineViewController

Adding an EntryTarget/Action

Gluten-free nesciunt swag kale chips assumenda, sed Reprehenderit bitters cillum excepteur. Hoodie trust fund pug ennui, lo-fi food truck est consectetur direct trade qui master cleanse biodiesel sint.

DoneCancel

Page 96: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkEntryViewController

Adding an EntryTarget/Action

Gluten-free nesciunt swag kale chips assumenda, sed Reprehenderit bitters cillum excepteur. Hoodie trust fund pug ennui, lo-fi food truck est consectetur direct trade qui master cleanse biodiesel sint.

DoneCancel

Page 97: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Gluten-free nesciunt swag kale chips assumenda, sed Reprehenderit bitters cillum excepteur. Hoodie trust fund pug ennui, lo-fi food truck est consectetur direct trade qui master cleanse biodiesel sint.

DoneCancel

Model-View-ControllerNetworking

Qwink Entry View Controller

Page 98: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Gluten-free nesciunt swag kale chips assumenda, sed Reprehenderit bitters cillum excepteur. Hoodie trust fund pug ennui, lo-fi food truck est consectetur direct trade qui master cleanse biodiesel sint.

DoneCancel

Model-View-ControllerNetworking

Qwink Entry View Controller

NSURLSession

Page 99: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleApplication level features

UIApplication

Page 100: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleApplication level features

QWKAppDelegateUIApplication

Page 101: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleApplication level features

QWKAppDelegateUIApplication

State Restoration

Page 102: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

QwinkleApplication level features

QWKAppDelegateUIApplication

State Restoration

Background Downloading

Page 103: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Change Happens

Page 104: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Private Qwinks

Pork belly sausage capicola porchetta bresaola. Corned beef turkey boudin, ribeye

shankle tongue pig cow short ribs frankfurter pork chop landjaeger.

Brooklyn readymade dreamcatcher, mumblecore roof party actually normcore

plaid 90's quinoa kogi scenester.

Qwinks PQ

Pork belly sausage capicola porchetta bresaola. Corned beef turkey boudin, ribeye

shankle tongue pig cow short ribs frankfurter pork chop landjaeger.

Requirements Change

Page 105: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Pork belly sausage capicola porchetta bresaola. Corned beef turkey boudin, ribeye

shankle tongue pig cow short ribs frankfurter pork chop landjaeger.

Requirements Change

Page 106: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Requirements Change

Pork belly sausage capicola porchetta bresaola. Corned beef turkey boudin, ribeye

shankle tongue pig cow short ribs frankfurter pork chop landjaeger.

Page 107: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Requirements Change

Table View Controller

NSURLSession

Pork belly sausage capicola porchetta bresaola. Corned beef turkey boudin, ribeye

shankle tongue pig cow short ribs frankfurter pork chop landjaeger.

Page 108: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Requirements Change

Table View Controller

NSURLSession

Pork belly sausage capicola porchetta bresaola. Corned beef turkey boudin, ribeye

shankle tongue pig cow short ribs frankfurter pork chop landjaeger.

Page 109: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Pork belly sausage capicola porchetta bresaola. Corned beef turkey boudin, ribeye

shankle tongue pig cow short ribs frankfurter pork chop landjaeger.

Copy and Paste

PublicTimelineViewController

NSURLSession

PrivateMessageViewController

NSURLSession

Page 110: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Pork belly sausage capicola porchetta bresaola. Corned beef turkey boudin, ribeye

shankle tongue pig cow short ribs frankfurter pork chop landjaeger.

Copy and Paste

PublicTimelineViewController

NSURLSession

PrivateMessageViewController

NSURLSession

Page 111: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Download Service

Refactor

PublicTimelineViewController

PrivateMessageViewController

NSURLSession

Pork belly sausage capicola porchetta bresaola. Corned beef turkey boudin, ribeye

shankle tongue pig cow short ribs frankfurter pork chop landjaeger.

Page 112: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Refactor

PublicTimelineViewController

Page 113: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Download Service

Refactor

PublicTimelineViewController

Page 114: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Download Service

Refactor

PublicTimelineViewControllerdownload

Page 115: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Download Service

Refactor

PublicTimelineViewControllerdownload

response

Page 116: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Refactor

Download ServicePublicTimelineViewController

Page 117: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Refactor

DownloadServiceDelegate

Download ServicePublicTimelineViewController

Page 118: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Refactor

DownloadServiceDelegate

Download ServicePublicTimelineViewController

Page 119: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Refactor

DownloadServiceDelegate

Download ServicePublicTimelineViewController PrivateMessageViewController

DownloadServiceDelegate

Download Service

Page 120: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Demo

Page 121: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Summary

Page 122: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Summary

Page 123: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

Summary

Page 124: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

More Information

Jake Behrens Grand Pooh-Bah Of Groovy [email protected]

Apple Developer Forums http://devforums.apple.com

Page 125: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns

• Advanced iOS Application Architecture and Patterns Presidio Thursday 2:00PM

• What’s New in Foundation Networking WWDC 2013

• API Design for Cocoa and Cocoa Touch WWDC 2010

Related Sessions

Page 126: Core iOS Application Architectural Patterns...Redistribution or public display not permitted without written permission from Apple. #WWDC14 Core iOS Application Architectural Patterns