[英]Calling a class method from another class in Objective-C (Cocoa)
我是Cocoa编程的新手,因此我仍在努力掌握一些基本概念。
我想做的事(例如)是编写带有多个NSTextFields
的应用程序。 但是,这些NSTextFields
需要链接到单独的类。 此外,每个单独的类都必须能够相互获取和设置数据。
我试图添加解决此问题的方法,但无济于事。 假设这是文本框原始类中的一个方法,我想从另一个类中调用它。
-(void)settextfield:(NSString*)stringy;
{
[TextField setStringValue:stringy];
}
这是调用代码(我们从另一个类TestClass调用此代码)...
-(IBAction)test:sender;
{
[BundleBrowseTextBox settextfield: @"Testy"];
}
什么都没发生。 可能有一些明显的方法可以做到这一点,但是我还无法通过Google搜索来发掘这一点。
我的错误是我在调用类方法而不是实例...您可以通过IBOutlets调用实例,并在Interface Builder中正确定义这些出口。
如果我正确地假设您尝试在BundleBrowseTextBox实例中设置文本,则应在实例名称而不是类名称上调用settextfield:消息(如果BundleBrowseTextBox是实例,而不是类-为了清晰起见,您应该避免使用大写的实例名称)。 即:
-(IBAction)test:(id)sender;
{
// Assuming bbtBox is defined as an instance of BundleBrowseTextBox
[bbtBox settextfield: @"Testy"];
}
您需要确保所使用的指针不是nil。
关于objC的一件奇怪/不便之处是,您可以将消息传递给nil,并且它不会崩溃。
我相信您在此原始帖子中忘记了参数类型...
-(IBAction)test:sender;
{
[BundleBrowseTextBox settextfield: @"Testy"];
}
应该
-(IBAction)test:(id)sender;
{
[BundleBrowseTextBox settextfield: @"Testy"];
}
顺便说一句,如果您按您的理解理解了类和实例之间的区别。 如果您能向我们展示其余的实现和接口,那就太好了。 问题可能出在您向我们展示的代码片段中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.