是否可以使用startMonitoringForRegion存储CLRegion的子类:稍后使用monitoredRegions检索它的正确版本/副本

时间:2014-03-14 15:14:50

标签: ios objective-c subclass core-location clregion

本周我尝试通过在其上添加新属性和方法来继承CLRegion类,然后对其进行监控。

@interface MyClass : CLRegion

我之所以这样做,是因为我发现它比分别存储CLRegion和单独添加的属性更清晰。

我在此子类中实现了NSSecureCodingNSCopying协议以使其工作。 使用startMonitoringForRegion:stopMonitoringForRegion:

监控此子类的一切都很顺利

但是当检索(NSArray *)monitoredRegions:的现有区域时,我的问题出现了:

如果我通过标识符将该区域标识为子类别区域, 然后将其强制转换为子类(MyClass *)以调用特定方法, 这不起作用,我得到了CLCircularRegion "" 未知选择器。异常。

我非常怀疑这不起作用,因为在Objective-C中没有虚拟方法这样的东西,所以当没有调用子进程// initWithCoder // encodeWithCoder // ..对象由monitoredRegions构建。

至于知道,我被迫在NSUserDefaults中存储附加属性并在识别区域时检索它,但我发现它有点脏......

有没有办法像这样做?或者我应该保留NSUserDefault解决方案吗?

1 个答案:

答案 0 :(得分:3)

不,你会得到' stock' CLRegions


引用:"此集合中的对象可能不一定是您在注册时指定的相同对象。系统仅维护区域数据本身。因此,唯一标识已注册区域的唯一方法是使用其标识符属性。"