gpt4 book ai didi

objective-c - 发送 'self' 到对象

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

我有一个 IBOutlet 和一个 IBAction 连接到 AppController 类。单击按钮时,它会创建另一个类 (CData) 的实例,并带有一条计算字符串的消息。我的问题是我希望可以从 CData 对象内访问 IBOutlet。

我通过在消息中包含 self 解决了这个问题,并在 AppController 中创建了 IBOutlet 的更新方法。

- (IBAction)buttonClicked:(id)sender
{
CData *myData = [[CData alloc] init];
[myData calculateString:self];
[myData release];
}

calculateString 中我完成了以下操作:

- (void)calculateString:(id)parent
{
[parent updateTextLog:@"Print data..."];
}

它就像一个魅力。但我的问题是,当我试图熟悉 Obj-C 和 Cocoa 时,这是否是解决问题的好方法,或者是否还有其他方法?

这只是一个概念证明,因为我很清楚我可以让 calculateString 返回一个值。

最佳答案

我不会用这种方式解决问题。

如果 CData 类必须以某种方式更新 View ,那么您应该在 IBAction 方法中执行此操作,或者将其视为模型中的 Model 类MVC 模式,并让它生成 View 可以观察到的 NSNotifcation

前一种方法最简单:

- (IBAction)buttonClicked:(id)sender
{
CData *myData = [[CData alloc] init];
ReturnValueType someReturnValue = [myData calculateString:self];
[someObject someMethod:someReturnValue];
[myData release];
}

这减少了耦合,因为 CData(模型)类不需要知道任何 View 或 Controller 的存在。

关于objective-c - 发送 'self' 到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405717/

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