是否可以在Objective C中创建CLHeading对象?

时间:2010-02-10 05:52:21

标签: iphone objective-c iphone-sdk-3.0

我正在尝试实现一个drop-in位置管理器子类,允许我将标题数据传递给iphone模拟器,类似于unimotion / accelerometer hack。不幸的是,根据CLHeading docs,一切都是只读的,并且没有允许设置标题的初始化器。有没有办法强制创建一个填充的CLHeading实例?

3 个答案:

答案 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。