2013-07-22 83 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 
} 
相關問題