iOS: Frameworks, Delega3on and MapKit Jussi Pohjolainen Tampere University of Applied Sciences
About Frameworks • Framework is a collec3on of classes that are added to target • Target = the compiled iOS app • Cocoa Touch has several frameworks • You can add and remove frameworks in your project
NSString NSString needs the Founda3on framework!
Add a Framework Choose Target Select Build Phases Click + (Link Binary with Libraries)
About Delegate // Create location managerLocationManager* lc = [[LocationManageralloc] init];// Who is receiving location updates? It’s// someObject. What is someObject? It’s// whatever object that implements a// certain protocol![lc setDelegate: someObject];
Documenta3on Whatever object, but is has to implement CLoca3oinManager Delegate Protocol!
About Delegate // Create location managerlc = [[LocationManager alloc] init];// Set delegate this “this”-object[lc setDelegate: self];
Delega3on • Delega3on: OO way of making callback • Send messages to some object. Some object must have methods that are deﬁned in the protocol • The same than in Java – buUon.addAc3onlistener(Ac3onListener x) – Where x is an interface • By default, protocol methods are mandatory. But protocol may hold op-onal methods! • Typically in delegate protocols, the methods are op-onal
Delega3on • If delega3on protocol method is mandatory, it’s called without checking • If delega3on protocol method is op3onal, then checking is done: if target object contains this method, call it. – This happens in run3me, you don’t have to worry about this.
CLLoca3onManagerDelegate.h All methods are op3onal!
MapKit Framework • Interface for embedding maps into view • Supports also – Annota3ng map – Adding overlay – Reverse geocoding • As of iOS 6 Apple uses it’s own maps instead of Google maps • Reference – hUp://developer.apple.com/library/ios/ #documenta3on/MapKit/Reference/ MapKit_Framework_Reference/_index.html
How? • Add MapKit framework to your project • Import MapKit – class – #import <MapKit/MapKit.h>• Use MKMapView object – IBOutlet MKMapView *worldView;• Show user loca3on? – Set showsUserLocation property to YES• Use MKMapViewDelegate protocol
MKMapViewDelegate This is called when user loca3on changes. In here you can get the coordinates and zoom in MapView
Annota3ons • Display something on a map: annota3on • Annota3on is any object that conforms to MKAnnotation protocol – These objects can be added to MKMapView • MKAnnota3on Reference – An object that adopts this protocol must implement the coordinate property. The other methods of this protocol are op3onal.