gpt4 book ai didi

objective-c - 为什么只有一个文本字段的值发生变化?

转载 作者:行者123 更新时间:2023-12-03 17:30:59 25 4
gpt4 key购买 nike

我有以下代码:

@interface AXWindowController : NSWindowController {
IBOutlet NSTextField *text;
IBOutlet NSTextField *otherText;
}

- (void) setText: (NSString *)input;
- (void) setOtherText;

@end

@implementation AXWindowController

- (void) setText: (NSString *)input
{
[text setStringValue:input];
}

- (void) setOtherText
{
[otherText setStringValue:@"nag"];
}

@end

当我运行时:

1. [controller showWindow:nil];
2. [controller setText:@"lol"];
3. [controller setOtherText];

第 3 行正确执行,但第 2 行不执行任何操作。事实上,当我在执行第 2 行和第 3 行时查看 gdb 中的 text 和 otherText 时,我得到以下结果:

(gdb) p text
$1 = (NSTextField *) 0x0
(gdb) p otherText
$2 = (NSTextField *) 0x1385d1e0

发生了什么事?我无法将输入变量传递给 NSTextField 的设置函数?为什么当我更改 set 函数的参数时,我的 NSTextField 变为 null?

最佳答案

这是众所周知的 KVC 问题。

当Cocoa加载你的NIB来连接IB中设计的outlet连接时,它会寻找setter。因此,它在加载时使用 NSTextField* 对象调用 setText: 。由于您的代码尚未准备好接受不同类型的对象...首先用于配置 socket ,第二个用于设置其内部文本值...您的 socket 将保持等于nil

所有对 nil 的调用 - 不执行任何操作。

解决方法:重命名 socket 变量名称或重命名 setter/getter 方法,使其与 KVC 表示法不同...

关于objective-c - 为什么只有一个文本字段的值发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1971830/

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