繁体   English   中英

从Objective-C(可可)中的另一个类调用一个类方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM