オブジェクトにオブザーバーを追加すると、次のNSMutableArray
ように追加できます。
- (void)addObservedObject:(id)object {
if (![_observedObjects containsObject:object]) {
[_observedObjects addObject:object];
}
}
オブジェクトの監視を解除したい場合は、次のようにします。
for (id object in _observedObjects) {
if ([object isKindOfClass:[MyClass class]]) {
MyClass *myObject = (MyClass *)object;
[self unobserveMethod:myObject];
}
}
[_observedObjects removeAllObjects];
1つのオブジェクトを監視しない場合は、_observedObjects
配列から削除してください。
- (void)removeObservedObject:(id)object {
if ([_observedObjects containsObject:object]) {
[_observedObjects removeObject:object];
}
}
addObserver:
、viewWillAppear:
それに対応removeObserver:
しviewWillDisappear:
て呼び出しが正しくペアリングされていると思いました。すぐに修正する必要があるので、try-catchソリューションを実装し、コメントを残して原因をさらに調査します。