今週、CLRegionクラスに新しいプロパティとメソッドを追加してクラスをサブクラス化し、それを監視しようとしました。
@interface MyClass : CLRegion
CLRegionこれを行ったのは、 と追加されたプロパティを別々に保存するよりもずっときれいだとわかったからです。
NSSecureCodingこのサブクラスにandNSCopyingプロトコルを実装して、それを機能させました。startMonitoringForRegion:orを使用してこのサブクラスを監視することはすべてうまくいきましたstopMonitoringForRegion:。
しかし、(NSArray *)monitoredRegions:私の問題で既存の領域を取得すると、次のことが発生します。
識別子によって領域をサブクラス化された領域として識別し、それをサブクラス化されたクラス (MyClass *) にキャストして特定のメソッドを呼び出すと、これは機能せず、「CLCircularRegion の不明なセレクター」例外が発生します。
Objective-Cには仮想メソッドなどがないため、オブジェクトがmonitoredRegionsによって構築されたときに息子のinit//initWithCoder//encodeWithCoder//..が呼び出されないため、これが機能しないと強く疑っています。
ご存知のようにNSUserDefaults、地域を特定するときに追加プロパティを保存して取得する必要がありますが、少し汚いと思います...
だから、このようにする方法はありますか?または、NSUserDefaultソリューションを保持する必要がありますか?