0

是否有任何类型的标志或方法可以在不触发任何事件处理程序的情况下调用方法?

例如,我正在处理一个方法并检查击键controlTextDidChange返回的字符是否有效。如果不是,我将其删除;如果是的话,我会附加一个词。问题是当我在 , 中更改文本时controlTextDidChangecontrolTextDidChange会再次调用,程序将无限循环。我知道我可以使用实例变量来解决这个问题,但是有没有任何标志或方法可以在不触发任何事件处理程序的情况下调用方法?

4

1 回答 1

0

将评论扩展为快速答案。

您有一种方法可以根据设计发出通知。您希望它不发出该通知。您没有可用的替代方法,可以在没有通知的情况下执行相同的操作。如果您希望它永远不会发出该通知,并且您可以访问该方法的代码,则可以将该方法调配到您刚刚注释掉该通知的版本。当然,如果你有代码,你可以添加另一个方法,然后调用那个方法。所以你没有代码,这一切都没有实际意义。

您不能只在代码中将该调用括起来删除侦听器然后恢复侦听器吗?换句话说,像这样的伪代码:

[self.controlThingy removeObserver:self]
[self.controlThingy myMethod]
[self.controlThingy addObserver:self]

然后,您对 myMethod 的那一次调用的通知充耳不闻。我用绑定和 KVO 做过类似的事情。

于 2014-05-02T16:30:39.340 回答