gpt4 book ai didi

iphone - iOS observeValueForKeyPath 没有被调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:16 26 4
gpt4 key购买 nike

我在调用 observeValueForKeyPath 时遇到问题,但使用以下方法解决了它:

observeValueForKeyPath not being called

不过,我想知道一般如何处理这个问题以供将来引用。

有效的代码如下所示:

 - (void) input: (NSString*) digit
{
NSLog(@"input() - Entering... digit=%@", digit);

if ([digits length] < MAX_DIGITS_LENGTH)
{
self.digits = [[[ self.digits autorelease] stringByAppendingString:digit] retain];
NSLog(@"digits is now %@", digits);
}

}

在此之前,我使用的是 NSMutableString 而不是 NSString,只是说使用了 appendString。我没有进行赋值,也没有将“self”附加到 digits 变量。是否有任何好的网站/教程可以更深入地解释这一点,以便我知道如何对任何类型的对象执行此操作?

最佳答案

KVO 通过方法调配和通知值变化来工作。如果您使用 out self 访问您的属性,那么您将直接访问 iVar 而不是使用该方法。当不使用方法时,无法向您的观察者发送 KVO 通知。您遇到的另一个问题是可变数据与不可变数据。当你追加一个字符串时,你并没有改变对象,而是改变了它指向的数据,这就是你没有收到任何通知的原因。仅调用 get 访问器来获取字符串,然后您在其上调用追加数据。

关于iphone - iOS observeValueForKeyPath 没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com