本周我尝试通过在其上添加新属性和方法来继承CLRegion
类,然后对其进行监控。
@interface MyClass : CLRegion
我之所以这样做,是因为我发现它比分别存储CLRegion
和单独添加的属性更清晰。
我在此子类中实现了NSSecureCoding
和NSCopying
协议以使其工作。
使用startMonitoringForRegion:
或stopMonitoringForRegion:
但是当检索(NSArray *)monitoredRegions:
的现有区域时,我的问题出现了:
如果我通过标识符将该区域标识为子类别区域, 然后将其强制转换为子类(MyClass *)以调用特定方法, 这不起作用,我得到了CLCircularRegion "" 未知选择器。异常。
我非常怀疑这不起作用,因为在Objective-C中没有虚拟方法这样的东西,所以当没有调用子进程// initWithCoder // encodeWithCoder // ..对象由monitoredRegions构建。
至于知道,我被迫在NSUserDefaults
中存储附加属性并在识别区域时检索它,但我发现它有点脏......
有没有办法像这样做?或者我应该保留NSUserDefault
解决方案吗?
答案 0 :(得分:3)
不,你会得到' stock' CLRegions
引用:"此集合中的对象可能不一定是您在注册时指定的相同对象。系统仅维护区域数据本身。因此,唯一标识已注册区域的唯一方法是使用其标识符属性。"