gpt4 book ai didi

objective-c - Cocoa:从单独的类获取方法的返回值

转载 作者:行者123 更新时间:2023-12-03 16:27:18 25 4
gpt4 key购买 nike

我知道这很简单,这就是为什么我一直疯狂地试图自己弄清楚,但我已经束手无策了。

当用户单击按钮时,应该执行以下操作:

- (IBAction)startAction:(id)sender {
MyClass *anInstance = [[MyClass alloc] init];
NSLog(@"the name is:%@", [anInstance name]);

正如你所看到的,MyClass 有一个“name”方法,它是这样的:

- (NSString *)name {
return [nameInput stringValue];
NSLog(@"stringValue = %@", [nameInput stringValue]);

nameInput 是一个文本字段,用户填写名称,按下按钮调用“startAction”,该方法应该调用另一个类中的“name”,该类应该从文本字段返回字符串值并生成日志.

实际发生的情况是,当按下开始时,日志显示“名称是:(null)”。第二条日志甚至没有出现。我认为这是因为“名称”方法没有被调用。但我不知道为什么。我应该指定它们位于不同的类中,并且我声明了“name”方法,如下所示:

- (NSString*)name;

编辑:经过一番闲逛后,我发现当从它自己的类调用“name”方法时,日志会正确显示文本字段中的内容。我在“name”方法中添加了一个额外的日志,我可以看到它正在从另一个类调用,但它返回的值仍然是(null),这意味着在阻止类获取文本字段字符串的调用。

编辑:我不确定这是否重要,但其中一个类是 NSObject 的子类,另一个是 NSViewController 的子类。

如果您需要更多信息,请告诉我。感谢您的帮助。

最佳答案

name方法中,您不能在NSLog()命令之前返回值——从方法返回是方法中发生的最后一件事(我很惊讶您没有收到有关 NSLog() 函数未调用的警告)。试试这个:

- (NSString *)name {
NSLog(@"stringValue = %@", [nameInput stringValue]);
return [nameInput stringValue];
}

至于为什么 nameInput 没有值,我猜你没有在 Interface Builder 中正确连接文本字段。

关于objective-c - Cocoa:从单独的类获取方法的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977034/

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