本周我尝试CLRegion
通过在其上添加新属性和方法来对类进行子类化,然后对其进行监视。
@interface MyClass : CLRegion
我这样做是因为我发现它比单独存储CLRegion
, 和添加的属性更干净。
我在这个子类中实现了NSSecureCoding
andNSCopying
协议以使其工作。startMonitoringForRegion:
使用or监视这个子类一切正常stopMonitoringForRegion:
。
但是,当检索存在(NSArray *)monitoredRegions:
我的问题的现有区域时:
如果我通过标识符将该区域标识为子类区域,然后将其转换为子类 (MyClass *) 以调用特定方法,这将不起作用,并且我得到一个“ CLCircularRegion 的未知选择器”异常。
我高度怀疑这是行不通的,因为在 Objective-C 中没有虚拟方法之类的东西,因此当被监控的区域构建对象时,不会调用儿子的 init//initWithCoder//encodeWithCoder//..。
据了解,当我识别该区域时,我被迫将附加属性存储NSUserDefaults
并检索它,但我发现它有点脏......
那么有没有办法做到这一点?还是我应该保留NSUserDefault
解决方案?