2013-07-22 74 views
2

我想在另一个函数中声明一个函数。因此,这里是我的代码部分: ViewController.m函数隐式声明“...”在C99中无效?

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

} 

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

ViewController.h

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

这回我“的功能隐式声明” ......的错误”是在C99" 无效。

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

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

Implicit declaration of function '...' is invalid on C99

+1

先学后相关的客观看到一些基本的东西,你可以实现programs..http://cocoadevcentral.com/d/learn_objectivec/ – Balu

回答

10

你是不是宣告function;但一个instance method,所以要调用它,你必须发送它作为消息self;

[self updatedisplay];

编辑

由于@rmaddy指出(谢谢你提供的),它被声明为实例方法不是类的方法。把事情弄清楚;

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

+1

'updatedisplay'被声明为一个实例方法,而不是一个类方法。 – rmaddy

+0

@rmaddy - 感谢您的纠正! – ludesign

+0

即使函数有参数,我仍然应该使用'self'吗?像gettimeofday(&endTime,NULL); – acecapades

4

问题

updatedisplay(); 

解决方案

[self updatedisplay]; 

原因

- (void)updatedisplay; 

是可用于一个类的方法,你必须从类调用class.So有可用的方法为你。

3

那是因为你定义你的函数为实例方法,而不是一个函数。

所以使用它像

- (IBAction)minus1:(id)sender { 
    counter--; 
    [self updatedisplay]; // Change this line 
} 
相关问题