2009-10-21 58 views
5

我收到這條線在我的頭警告,但我用我的實現類變量(在類方法和實例方法):爲什麼Xcode爲我的類變量報告「已定義但未使用」警告?

#import <UIKit/UIKit.h> 

static NSMutableArray *classVar; // Xcode warning: 'classVar' defined but not used 

@interface MyViewController : UIViewController { 
+0

你需要包括更多的代碼,在您使用它等。 – MarkPowell 2009-10-21 20:03:33

+0

您是否也可以展示如何在實現中使用它? – cdespinosa 2009-10-21 20:09:10

+1

刪除或使用該變量,警告將消失。 – Steven 2009-10-21 20:20:34

回答

14

這個變量是不是一類/實例變量。每次將頭文件包含到.m文件時,編譯器都會創建一個新的靜態變量,其範圍僅限於包含此頭的文件。如果您試圖獲取類級變量,請將聲明移至相應.m文件的開頭。

+0

示例:http://wiki.gonzofamily.com/a/NSNotification_usage – mattorb 2011-05-25 20:08:58

3

你已經把接口定義外classVar 。這會讓編譯器認爲你聲明瞭一個全局變量,並且因爲它看起來像一個頭文件(.h),它也將在包括這個頭文件的所有文件中創建。我猜想編譯除MyViewController.m以外的文件時會出現警告,該文件包含此頭文件。

編輯 我的建議是你移動classVar成MyViewController .m文件(誤解釋你在那裏第一次後)

+0

但你不能在其他m文件中使用它。 – malhal 2013-06-28 00:40:31

6

A static變量具有文件範圍。由於Xcode無法找到該文件中使用的變量,因此它會看到一個未使用的變量。如果你真的希望你的整個程序可以訪問這個變量,那麼做一個extern變量聲明並在你的實現中定義它。如果它只能用於該類,只需將該靜態變量移動到您的實現文件中即可。

0

這裏是這樣做的正確方法:

在.H

extern NSString *const DidAddRecordNotification; 

在.M

NSString *const DidAddRecordNotification = @"DidAddRecordNotification"; 
相關問題