6

我试图在另一个函数中声明一个函数。所以这是我的代码的一部分:ViewController.m

- (void)updatedisplay{
    [_displayText setText:[NSString stringWithFormat:@"%d", counter]];

}

- (IBAction)minus1:(id)sender {
    counter--;
    updatedisplay();
}

视图控制器.h

- (IBAction)minus1:(id)sender;
- (void)updatedisplay;

这让我返回了“函数的隐式声明“...”在 C99 中无效”的错误。

结果:http: //i.imgur.com/rsIt6r2.png

我发现人们也遇到过类似的问题,但作为一个新手,我真的不知道下一步该做什么。谢谢你的帮助!:)

函数“...”的隐式声明在 C99 上无效

4

4 回答 4

14

您没有声明function; 但是instance method,要这样称呼它,您必须将其作为消息发送给self

[self updatedisplay];

编辑

正如@rmaddy 指出的那样(感谢),它被声明为实例方法而不是类方法。把事情说清楚;

- (return_type)instance_method_name....通过'self'或指向对象实例的指针调用。
+ (return_type)class_method_name....直接在类上调用(静态)。

于 2013-07-22T05:14:10.687 回答
7

问题

updatedisplay();

解决方案

[self updatedisplay];

原因

- (void)updatedisplay;

是该类可用的类方法。因此,您必须从该类调用才能使该方法可供您使用。

于 2013-07-22T05:14:49.613 回答
4

那是因为您将函数定义为实例方法,而不是函数。

所以像这样使用它

- (IBAction)minus1:(id)sender {
    counter--;
    [self updatedisplay]; // Change this line
}
于 2013-07-22T05:15:45.070 回答
2

这样写:

[self updatedisplay];
于 2013-07-22T05:14:58.967 回答