循环检查对象的属性

时间:2014-02-03 16:06:23

标签: ios objective-c cocoa-touch

我将如何构建一个持续小延迟的循环,此循环将检查对象属性是否为非null,循环将在x秒后超时。

我正在等待另一个对象来设置HTTP响应属性,这是不好的做法还是?

2 个答案:

答案 0 :(得分:4)

为什么需要继续轮询对象?你有没有想过KVO(Key Value Observing?):

[self.yourObject addObserver: self forKeyPath: @"objectProperty" options: NSKeyValueObservingOptionNew context: nil];

然后:

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if (object == yourObject) {

        //Check property is not nil
    }
}

- (void) dealloc
{
    [yourObject removeObserver: self forKeyPath: @"objectProperty"];
}

有关详细信息,请参阅Apple docs

答案 1 :(得分:2)

如果要检查属性中的更改,可以使用键值观察(KVO),这就是它的用途。

基本上:

[theObjectHavingTheProperty addObserver:self forKeyPath:@"propertyName" options:0 context:nil];

不要忘记删除dealloc上的观察者。

每当属性发生变化时,都会调用此方法:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context