I'm trying to implement a drop-in location manager subclass to allow me to pass heading data to the iphone simulator, similar to the unimotion/accelerometer hack. Unfortunately, according to the CLHeading docs, everything is read only and there's no initialiser which allows the heading to be set. Is there a way to force the creation of a populated instance of CLHeading?
Since Objective-C is a dynamically typed language, you can create your own class (for example,MyFakeHeading
) and as long as it responds to all of the same selectors that CLHeading
does, you can simply cast it as a CLHeading
and pass it as a parameter instead. And, since you only need to fake out your own code, you don't even need to implement all the functionality of CLHeading
, just the parts your are using.