我有一个 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/