In The Brain of Paul Ardeleanu: What's new in iOS 4

Post on 15-Jan-2015

2.732 views 0 download

Tags:

description

Skills Matter Presentation: "What's new in iOS 4"

Transcript of In The Brain of Paul Ardeleanu: What's new in iOS 4

What’s new in iOS4Paul Ardeleanu

@pardel

SkillsMatter - August 12th 2010

SkillsMatter - August 12th 2010

http://pardel.net

What was missing?

Multitasking

Flash

SkillsMatter - August 12th 2010

http://pardel.net

What’s new in iOS4?

Multitasking

Local Notifications

iAd

Game Center

New Frameworks & APIs

SkillsMatter - August 12th 2010

http://pardel.net

1. Multitasking

SkillsMatter - August 12th 2010

http://pardel.net

1. Multitasking ... of a different kind

SkillsMatter - August 12th 2010

http://pardel.net

Multitasking

SkillsMatter - August 12th 2010

http://pardel.net

Multitasking

Fast app switching

Task Completion

Background Audio

Navigation & Location tracking

VoIP

SkillsMatter - August 12th 2010

http://pardel.net

Fast App Switching

Running

Not running

SkillsMatter - August 12th 2010

http://pardel.net

Fast App Switching

Running

Not running

Active

Inactive

SkillsMatter - August 12th 2010

http://pardel.net

Fast App Switching

Running

Not running

Running

Not running

Background

Active

Inactive

SkillsMatter - August 12th 2010

http://pardel.net

Fast App Switching

Running

Not running

Running

Not running

Background

Active

Inactive

Running

Suspended

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

Not running

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

Not running

didFinishLaunchingWithOptions:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

applicationDidResignActive:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

applicationDidEnterBackground:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

applicationDidEnterBackground:

applicationDidEnterForeground:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

applicationDidEnterBackground:

applicationDidEnterForeground:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

applicationDidEnterBackground:

applicationDidEnterForeground:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

didFinishLaunchingWithOptions:

applicationDidBecomeActive:

applicationDidResignActive:

applicationDidTerminate:

applicationDidEnterBackground:

applicationDidEnterForeground:

SkillsMatter - August 12th 2010

http://pardel.net

UIApplicationDelegate Callbacks

//// MyAppDelegate.m//

- (void)applicationWillResignActive:(UIApplication *)application

- (void)applicationDidEnterBackground:(UIApplication *)application

- (void)applicationWillEnterForeground:(UIApplication *)application

- (void)applicationDidBecomeActive:(UIApplication *)application

- (void)applicationWillTerminate:(UIApplication *)application

UIApplicationDidEnterBackgroundNotificationUIApplicationDidEnterForegroundNotification

SkillsMatter - August 12th 2010

http://pardel.net

UIApplicationDelegate Callbacks

//// MyAppDelegate.m//

- (void)applicationWillResignActive:(UIApplication *)application

- (void)applicationDidEnterBackground:(UIApplication *)application

- (void)applicationWillEnterForeground:(UIApplication *)application

- (void)applicationDidBecomeActive:(UIApplication *)application

- (void)applicationWillTerminate:(UIApplication *)application

Demo

UIApplicationDidEnterBackgroundNotificationUIApplicationDidEnterForegroundNotification

SkillsMatter - August 12th 2010

http://pardel.net

UIApplicationtypedef enum { UIApplicationStateActive, UIApplicationStateInactive, UIApplicationStateBackground} UIApplicationState;

@property(nonatomic,readonly) UIApplicationState applicationState

[[UIApplication sharedApplication] applicationState]

SkillsMatter - August 12th 2010

http://pardel.net

Best practicesForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

applicationDidEnterBackground:

applicationDidEnterForeground:

SkillsMatter - August 12th 2010

http://pardel.net

Best practicesForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

applicationDidEnterBackground:

applicationDidEnterForeground:

✦ save state✦ minimise memory usage✦ change the UI accordingly✦ stop Bonjour & networking✦ stop shared system data

access & GPU

SkillsMatter - August 12th 2010

http://pardel.net

Best practicesForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

applicationDidEnterBackground:

applicationDidEnterForeground:

✦ save state✦ minimise memory usage✦ change the UI accordingly✦ stop Bonjour & networking✦ stop shared system data

access & GPU

your app can be terminated at any time

SkillsMatter - August 12th 2010

http://pardel.net

No Multitasking

UIApplicationExitsOnSuspend

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

applicationDidEnterBackground:

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

applicationDidEnterBackground:

applicationDidTerminate:

SkillsMatter - August 12th 2010

http://pardel.net

Background Services

Task completion

Background Audio

VoIP

Background Location

SkillsMatter - August 12th 2010

http://pardel.net

Task completionForegroundActive

Inactive

Background

Not running

SkillsMatter - August 12th 2010

http://pardel.net

Task completionForegroundActive

Inactive

BackgroundRunning

Not running

SkillsMatter - August 12th 2010

http://pardel.net

Task completionForegroundActive

Inactive

BackgroundRunning

Not running

SkillsMatter - August 12th 2010

http://pardel.net

Task completionForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

SkillsMatter - August 12th 2010

http://pardel.net

Task completionForegroundActive

Inactive

BackgroundRunning

Not running

SkillsMatter - August 12th 2010

http://pardel.net

Task completionUIApplication

- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^)(void))handler;- (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier;

@property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining;

SkillsMatter - August 12th 2010

http://pardel.net

Task completionUIApplication

typedef NSUInteger UIBackgroundTaskIdentifier;

- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^)(void))handler;- (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier;

@property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining;

SkillsMatter - August 12th 2010

http://pardel.net

Task completion

self.bgTaskId = [app beginBackgroundTaskWithExpirationHandler: ^{ [self stopLongTask];}];...[[UIApplication sharedApplication] endBackgroundTask:self.bgTaskId];

UIApplication

typedef NSUInteger UIBackgroundTaskIdentifier;

- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^)(void))handler;- (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier;

@property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining;

SkillsMatter - August 12th 2010

http://pardel.net

Background Services

Task completion

Background Audio

VoIP

Background Location

SkillsMatter - August 12th 2010

http://pardel.net

Background Services

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

Background

Not running

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Not running

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Not running

AVAudioSession

AVAudioSessionDelegate

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Not running

AVAudioSession

AVAudioSessionDelegate

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

beginInteruption

AVAudioSession

AVAudioSessionDelegate

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

beginInteruption

AVAudioSession

AVAudioSessionDelegate

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

Running

beginInteruption

AVAudioSession

AVAudioSessionDelegate

endInteruption

SkillsMatter - August 12th 2010

http://pardel.net

App Life CycleForegroundActive

Inactive

BackgroundRunning

Suspended

Not running

Running

beginInteruption

AVAudioSession

AVAudioSessionDelegate

endInterruptionWithFlags:

SkillsMatter - August 12th 2010

http://pardel.net

Background Location Services

Turn by turn directions

Location tracking✦ Significant location changing✦ Region monitoring (iPhone4 only)

SkillsMatter - August 12th 2010

http://pardel.net

Turn by turn directions

locationManager = [[CLLocationManager alloc] init];locationManager.delegate = self;locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;[locationManager startUpdatingLocation];

SkillsMatter - August 12th 2010

http://pardel.net

Turn by turn directions

locationManager = [[CLLocationManager alloc] init];locationManager.delegate = self;locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;[locationManager startUpdatingLocation];

extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation;extern const CLLocationAccuracy kCLLocationAccuracyBest;extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;extern const CLLocationAccuracy kCLLocationAccuracyKilometer;extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;

SkillsMatter - August 12th 2010

http://pardel.net

Turn by turn directions

kCLLocationAccuracyBestForNavigationUse the highest possible accuracy and combine it with additional sensor data. This level of accuracy is intended for use in navigation applications that require precise position information at all times and are intended to be used only while the device is plugged in.

locationManager = [[CLLocationManager alloc] init];locationManager.delegate = self;locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;[locationManager startUpdatingLocation];

extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation;extern const CLLocationAccuracy kCLLocationAccuracyBest;extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;extern const CLLocationAccuracy kCLLocationAccuracyKilometer;extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

a) Significant location changing

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

a) Significant location changing

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

a) Significant location changing

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

a) Significant location changing

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

a) Significant location changing

locationManager = [[CLLocationManager alloc] init];locationManager.delegate = self;[locationManager startMonitoringSignificantLocationChanges];

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

a) Significant location changing

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

locationManager = [[CLLocationManager alloc] init];locationManager.delegate = self;[locationManager startMonitoringSignificantLocationChanges];

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

b) Region monitoring (iPhone4 only)

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

b) Region monitoring (iPhone4 only)

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

b) Region monitoring (iPhone4 only)

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

SkillsMatter - August 12th 2010

http://pardel.net

Location tracking

b) Region monitoring (iPhone4 only)

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

locationManager = [[CLLocationManager alloc] init];locationManager.delegate = self;locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;CLLocationCoordinate2D regionCenterCoordinate;tempCoordinate.latitude = 51.5245;tempCoordinate.longitude = -0.0995;

CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:regionCenterCoordinate radius:10.0 identifier:@"Skills Matter"];[locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyNearestTenMeters];

SkillsMatter - August 12th 2010

http://pardel.net

Multitasking

SkillsMatter - August 12th 2010

http://pardel.net

Multitasking

Fast app switching

Task Completion

Background Audio

Navigation & Location tracking

VoIP

SkillsMatter - August 12th 2010

http://pardel.net

2. Local Notifications

SkillsMatter - August 12th 2010

http://pardel.net

Local notifications// check if the local notification class exists Class cls = NSClassFromString(@"UILocalNotification");if (cls != nil) {

// check if the device is supporting multitasking UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { UIApplication* app = [UIApplication sharedApplication]; UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease]; if (alarm) { alarm.fireDate = [NSDate date]; alarm.timeZone = [NSTimeZone defaultTimeZone]; alarm.repeatInterval = 0; alarm.soundName = @"alert.caf"; alarm.alertBody = @"Ha ha"; [app scheduleLocalNotification:alarm]; } }

}

SkillsMatter - August 12th 2010

http://pardel.net

Local notifications// check if the local notification class exists Class cls = NSClassFromString(@"UILocalNotification");if (cls != nil) {

// check if the device is supporting multitasking UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { UIApplication* app = [UIApplication sharedApplication]; UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease]; if (alarm) { alarm.fireDate = [NSDate date]; alarm.timeZone = [NSTimeZone defaultTimeZone]; alarm.repeatInterval = 0; alarm.soundName = @"alert.caf"; alarm.alertBody = @"Ha ha"; [app scheduleLocalNotification:alarm]; } }

}

Demo

SkillsMatter - August 12th 2010

http://pardel.net

3. iAd

SkillsMatter - August 12th 2010

http://pardel.net

iAd

Nov 09 - Google acquires AdMob for $750 million in stock

Jan 10 - Apple acquires Quattro Wireless for $275 million

SkillsMatter - August 12th 2010

http://pardel.net

iAd

CPM + CPC = eCPM

SkillsMatter - August 12th 2010

http://pardel.net

iAd

CPM + CPC = eCPM

SkillsMatter - August 12th 2010

http://pardel.net

iAd

CPM + CPC = eCPM

60% revenues

SkillsMatter - August 12th 2010

http://pardel.net

iAd

SkillsMatter - August 12th 2010

http://pardel.net

iAd.frameworkADBannerView

@property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers;@property (nonatomic, copy) NSString *currentContentSizeIdentifier;

@property(nonatomic, readonly) BOOL bannerLoaded;@property(nonatomic, readonly) BOOL bannerViewActionInProgress;

- (void)cancelBannerViewAction;

@property(nonatomic, assign) id<ADBannerViewDelegate> delegate;

SkillsMatter - August 12th 2010

http://pardel.net

iAd.frameworkADBannerView

@property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers;@property (nonatomic, copy) NSString *currentContentSizeIdentifier;

@property(nonatomic, readonly) BOOL bannerLoaded;@property(nonatomic, readonly) BOOL bannerViewActionInProgress;

- (void)cancelBannerViewAction;

@property(nonatomic, assign) id<ADBannerViewDelegate> delegate;

SkillsMatter - August 12th 2010

http://pardel.net

iAd.frameworkADBannerView

@property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers;@property (nonatomic, copy) NSString *currentContentSizeIdentifier;

@property(nonatomic, readonly) BOOL bannerLoaded;@property(nonatomic, readonly) BOOL bannerViewActionInProgress;

- (void)cancelBannerViewAction;

@property(nonatomic, assign) id<ADBannerViewDelegate> delegate;

SkillsMatter - August 12th 2010

http://pardel.net

iAd.frameworkADBannerView

ADBannerContentSizeIdentifier320x50ADBannerContentSizeIdentifier480x32

@property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers;@property (nonatomic, copy) NSString *currentContentSizeIdentifier;

@property(nonatomic, readonly) BOOL bannerLoaded;@property(nonatomic, readonly) BOOL bannerViewActionInProgress;

- (void)cancelBannerViewAction;

@property(nonatomic, assign) id<ADBannerViewDelegate> delegate;

SkillsMatter - August 12th 2010

http://pardel.net

iAd.framework

ADBannerViewDelegate

ADBannerView

- (void)bannerViewDidLoadAd:(ADBannerView *)banner;

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave;- (void)bannerViewActionDidFinish:(ADBannerView *)banner;

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error;

SkillsMatter - August 12th 2010

http://pardel.net

iAd.framework

ADBannerViewDelegate

Demo

ADBannerView

- (void)bannerViewDidLoadAd:(ADBannerView *)banner;

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave;- (void)bannerViewActionDidFinish:(ADBannerView *)banner;

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error;

SkillsMatter - August 12th 2010

http://pardel.net

iAd JS

✦ Banner✦ Main advertising screen

HTML5 + CSS3

SkillsMatter - August 12th 2010

http://pardel.net

4. Game Center

SkillsMatter - August 12th 2010

http://pardel.net

Game Center

✦ Beta✦ Social gaming network✦ Leaderboards & Achievements

SkillsMatter - August 12th 2010

http://pardel.net

5. New Frameworks & APIs

SkillsMatter - August 12th 2010

http://pardel.net

Block Objects

SkillsMatter - August 12th 2010

http://pardel.net

Block Objectsself.bgTaskId = [app beginBackgroundTaskWithExpirationHandler:^{ [self stopLongTask];}];

SkillsMatter - August 12th 2010

http://pardel.net

Block Objectsself.bgTaskId = [app beginBackgroundTaskWithExpirationHandler:^{ [self stopLongTask];}];

an object with some code

respond to NSObject methods

available in C

SkillsMatter - August 12th 2010

http://pardel.net

Blocks

SkillsMatter - August 12th 2010

http://pardel.net

Blocks

returnType (^myBlockName) (argumentType) = ^(argumentType argumentName){ returnType x; ... return x;}

SkillsMatter - August 12th 2010

http://pardel.net

Blocks

returnType (^myBlockName) (argumentType) = ^(argumentType argumentName){ returnType x; ... return x;}

int (^myBlock) (int) = ^(int num) { return num * multiplier; }

SkillsMatter - August 12th 2010

http://pardel.net

Blocks

returnType (^myBlockName) (argumentType) = ^(argumentType argumentName){ returnType x; ... return x;}

int (^myBlock) (int) = ^(int num) { return num * multiplier; }

int multiplier = 5;

SkillsMatter - August 12th 2010

http://pardel.net

Blocks

returnType (^myBlockName) (argumentType) = ^(argumentType argumentName){ returnType x; ... return x;}

int (^myBlock) (int) = ^(int num) { return num * multiplier; }

int multiplier = 5;

myBlock(7);

SkillsMatter - August 12th 2010

http://pardel.net

New Frameworks

Quick Look

Event Kit

Core Motion

Core Telephony

Data Protection

SkillsMatter - August 12th 2010

http://pardel.net

Event Kit

SkillsMatter - August 12th 2010

http://pardel.net

Event Kit

EKEventStore@property(nonatomic, readonly) NSArray *calendars@property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents

SkillsMatter - August 12th 2010

http://pardel.net

Event Kit

EKEventStore@property(nonatomic, readonly) NSArray *calendars@property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents

EKCalendar

SkillsMatter - August 12th 2010

http://pardel.net

Event Kit

EKEventStore@property(nonatomic, readonly) NSArray *calendars@property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents

EKCalendartypedef enum { EKCalendarTypeLocal, EKCalendarTypeCalDAV, EKCalendarTypeExchange, EKCalendarTypeSubscription, EKCalendarTypeBirthday,} EKCalendarType;

SkillsMatter - August 12th 2010

http://pardel.net

Event Kit

EKEventStore@property(nonatomic, readonly) NSArray *calendars@property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents

EKCalendar EKEventtypedef enum { EKCalendarTypeLocal, EKCalendarTypeCalDAV, EKCalendarTypeExchange, EKCalendarTypeSubscription, EKCalendarTypeBirthday,} EKCalendarType;

alarms -> EKAlarmorganizer, attendees -> EKParticipantrecurrenceRule -> EKRecurrenceRule

SkillsMatter - August 12th 2010

http://pardel.net

New API’s

Block related methods

- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block

Photo Library Access

MapKit improvements

SkillsMatter - August 12th 2010

http://pardel.net

PROGRAMME

Day 1: Introduction to iOS development I • The development environment • Objective C crash course • Foundation framework • Memory management • The iPhone Dev Center

Day 3: Advance Features I • Touch & Gestures • Camera & Photo Library access • Core Location • Event Kit • Core Motion • Web Services (inc. XML & JSON Parsers) • Threading • Localisation

Day 2: Introduction to iOS development II • Design patterns (MVC, Delegation, etc.) • Table views, Navigation, Tab bar • Data Persistence (Preferences, SQLite & Code Data) • Animation • Core Graphics

Day 4: Advance Features II • Documents Sharing • Multitasking • Local notifications • iPad Specific topics • Testing and Optimisation (Instruments) • Submitting your application to the App Store

SkillsMatter - August 12th 2010

http://pardel.net

Thank you

http://pardel.nethttp://twitter.com/pardel