【问题标题】:Why isn't my method calling?为什么我的方法没有调用?
【发布时间】:2015-08-01 05:38:31
【问题描述】:

您好,我正在尝试调用另一个类的方法,但它不起作用。

这是我要调用的方法,“updateName”。

@interface Content1ViewController ()

@end

@implementation Content1ViewController

+ (void)updateName:(id)sender {
    NSLog(@"IT WORKED");
}

- (void)viewDidLoad {
    [super viewDidLoad];
}

@end

然后我尝试在另一个类的方法中调用它。

-(void)randomMethod {

[Content1ViewController updateName];

}

然后我在“更新名称”处收到错误,因为它无法识别该方法?我关注了这个answer,它对我不起作用。我已经确保我也已经将这些类相互导入了。

谁能告诉我为什么它不起作用?谢谢。

【问题讨论】:

  • 你声明了 + (void)updateName:(id)sender;在你的 .h 文件中

标签: objective-c methods viewcontroller


【解决方案1】:

您的声明与方法签名不匹配,即您需要调用:

[Content1ViewController updateName:SOMETHING_HERE]; 

【讨论】:

    【解决方案2】:

    确保在Content1ViewController 的头文件中声明该方法,这将使其公开。此外,调用方方法的签名与最初声明的方法不同。 updateName 需要一个 (id)sender 的参数,请确保传递一些引用以调用正确的方法。

    【讨论】:

      【解决方案3】:

      这里的updateName是一个以sender为参数的方法。

      [Content1ViewController updateName:SOME_SENDER_ID_INSTANCE]; //Should work. Because your method definition says it needs `id` as param.
      

      【讨论】:

        【解决方案4】:

        updateName 有一个参数 sender,而你在调用方法时没有传递它,因此你得到了错误

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-07
          • 2019-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-13
          相关资源
          最近更新 更多