1

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

@interface MyClass : CLRegion

我这样做是因为我发现它比单独存储CLRegion, 和添加的属性更干净。

我在这个子类中实现了NSSecureCodingandNSCopying协议以使其工作。startMonitoringForRegion:使用or监视这个子类一切正常stopMonitoringForRegion:

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

如果我通过标识符将该区域标识为子类区域,然后将其转换为子类 (MyClass *) 以调用特定方法,这将不起作用,并且我得到一个“ CLCircularRegion 的未知选择器”异常。

我高度怀疑这是行不通的,因为在 Objective-C 中没有虚拟方法之类的东西,因此当被监控的区域构建对象时,不会调用儿子的 init//initWithCoder//encodeWithCoder//..。

据了解,当我识别该区域时,我被迫将附加属性存储NSUserDefaults并检索它,但我发现它有点脏......

那么有没有办法做到这一点?还是我应该保留NSUserDefault解决方案?

4

1 回答 1

3

不,您将获得“库存” CLRegions


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

于 2014-03-14T15:21:26.707 回答