我正在尝试实现一个drop-in位置管理器子类,允许我将标题数据传递给iphone模拟器,类似于unimotion / accelerometer hack。不幸的是,根据CLHeading docs,一切都是只读的,并且没有允许设置标题的初始化器。有没有办法强制创建一个填充的CLHeading实例?
答案 0 :(得分:8)
由于Objective-C是一种动态类型语言,您可以创建自己的类(例如,MyFakeHeading
),只要它响应CLHeading
所做的所有相同选择器,可以简单地将其转换为CLHeading
并将其作为参数传递。而且,由于您只需要伪造自己的代码,因此您甚至不需要实现CLHeading
的所有功能,只需要实现您正在使用的部分。
答案 1 :(得分:1)
如果您使用私有方法(私有或企业应用)可以,您可以将CLHeading+Init.h
添加到您的项目中:
@interface CLHeading (Init)
- (id)initWithHeading:(double)heading accuracy:(double)accuracy;
@end
我在我的位置模拟器https://github.com/maciekish/MockingPlace
中使用它警告!这将使您的应用程序从App Store中被拒绝!
答案 2 :(得分:0)
另一种方法是子类CLHeading
并覆盖你关心的属性getter和setter。