gpt4 book ai didi

objective-c - NSCell -stringValue 调用 -setStringValue?

转载 作者:行者123 更新时间:2023-12-03 17:58:32 26 4
gpt4 key购买 nike

本质上,这是我在 NSTextFieldCell 子类中的代码:

- (void)setStringValue:(NSString *)aString {
[super setStringValue:aString];
[self doSomething];
}

- (void)doSomething {
NSLog(@"%@", [self stringValue]);
}

本质上,我试图让我的子类收到字符串值更改的通知,当值更改时,我希望 NSCell 的子类能够使用该新值执行某些操作(使用 -attributedStringValue 将甚至更好,因为我想缓存它以进行特殊绘图)。问题是,由于某种原因,调用 -(NSString *)stringValue 会以某种方式导致调用 -(void)setStringValue ,最终变成......

...无限循环。有人可以告诉我这个问题 - 以及可能的解决方法吗?

最佳答案

可能stringValue正在执行一些延迟初始化。如果它检测到它没有 stringValue 但可以从其他东西派生值(也许是 attributedStringValue?),那么它会派生该值,调用 [self setStringValue:衍生值],然后返回值。

但这确实让生活变得棘手。尝试这样的事情吗?

@implementation MyCell ()
{
BOOL gettingStringValue;
}
@end

- (NSString*)stringValue {
gettingStringValue = YES;
NSString* stringValue = [super stringValue];
gettingStringValue = NO;
return stringValue;
}

- (void)setStringValue:(NSString *)aString {
[super setStringValue:aString];
if (!gettingStringValue)
[self doSomething];
}

关于objective-c - NSCell -stringValue 调用 -setStringValue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066976/

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