不确定我问的是否正确,但无论如何我都会尝试一下。
我有一个程序可以调用这段代码......
[localCalculateTimeFiles addObserver:self
forKeyPath:@"arraystatuscounter"
options:NSKeyValueObservingOptionNew
context:NULL];
最终 localCalculateTimeFiles 消失了,我想 removeObserver 当前的代码位(粗略地说)。如果我什么都不做并且 localCalculateTimesFiles 消失而我没有执行正确的 removeObserver,则运行时会引发异常。我认为它过去更像是一个警告,但现在程序异常终止。
假设我在正确的时间将所有对象指针正确并指向正确的位置。我想做的是让 localCalculateTimeFiles 在释放观察者的途中(可以这么说)删除观察者。
似乎根据 Apple 文档,我可以向 localCalculateTimeFiles 添加一个看起来像这样的方法来完成这项工作......
- (void)finalize {
if (log_file != NULL) {
fclose(log_file);
log_file = NULL;
}
[super finalize];
}
我将用注销观察者的新逻辑替换处理 log_file 的逻辑。显然,我必须确保我的所有指针都是正确的,以确保 removeObserver 方法具有正确的操作项。让我正确地做到这一点,这是有道理的还是我完全离开了?