在Objective-C(Cocoa)中从另一个类调用类方法

在Objective-C(Cocoa)中从另一个类调用类方法,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我对Cocoa编程还不熟悉,所以我仍在努力掌握一些基本概念 我想做的(例如)是编写一个具有多个NSTextFields的应用程序。但是,这些NSTextFields需要链接到单独的类。此外,每个单独的类需要能够从彼此获取和设置数据 我试图添加一些方法来解决这个问题,但没有成功。假设这是textbox原始类中的一个方法,我想从另一个类调用它 -(void)settextfield:(NSString*)stringy; { [TextField setStringValue:stringy

我对Cocoa编程还不熟悉,所以我仍在努力掌握一些基本概念

我想做的(例如)是编写一个具有多个
NSTextFields
的应用程序。但是,这些
NSTextFields
需要链接到单独的类。此外,每个单独的类需要能够从彼此获取和设置数据

我试图添加一些方法来解决这个问题,但没有成功。假设这是textbox原始类中的一个方法,我想从另一个类调用它

-(void)settextfield:(NSString*)stringy;
{
    [TextField setStringValue:stringy];
}   
这是调用代码(我们从另一个类TestClass调用它)


什么也没发生。可能有一些显而易见的方法可以做到这一点,但我无法通过谷歌搜索发现这一点。

如果我正确地假设您试图在BundleBrowseTextBox的实例中设置文本,那么您应该在实例名上调用settextfield:消息,而不是在类名上(如果BundleBrowseTextBox是实例——而不是类——为了清晰起见,您应该避免使用大写的实例名称)


您需要确保正在使用的指针不是零


objC的一个奇怪/方便之处是,您可以将消息传递给nil,它不会崩溃。

我相信您在最初的帖子中忘记了参数类型 这个

应该是

   -(IBAction)test:(id)sender;
   {
      [BundleBrowseTextBox settextfield: @"Testy"];
   }
如果你像你所说的那样理解类和实例之间的区别,那就把它放在一边。 如果您能向我们展示其余的实现和接口,那就太好了。
问题可能不在您向我们展示的代码片段中。

我的错误是调用类方法而不是实例…您可以通过IBOutlets调用实例,并在Interface Builder中正确定义这些outlets。

我让Interface Builder为我初始化实例。我猜这是对我的惩罚r不设置任何初始化代码?:P基本上,我知道如何初始化类,我知道实例和类之间的区别,但是,我不知道这与interface builder有什么关系。在您了解了更多关于如何使用类的知识后,您应该看一看如何命名类、实例和方法没错。
-(IBAction)test:(id)sender;
{
   // Assuming bbtBox is defined as an instance of BundleBrowseTextBox
   [bbtBox settextfield: @"Testy"];
}
      -(IBAction)test:sender;
      {
        [BundleBrowseTextBox settextfield: @"Testy"];
      }
   -(IBAction)test:(id)sender;
   {
      [BundleBrowseTextBox settextfield: @"Testy"];
   }