2010-03-16 80 views
1

我讀過Objective-C沒有類級別屬性的地方,但可以通過聲明類似的內容(在類接口之前)來實現:Objective-C中的類級屬性(刪除警告)

static NSInteger initCount; 

我初始化變量與初始化方法爲零:

// interface 
+ (void) initialize; 

// implementation 
+ (void) initialize { 
    initCount = 0; 
} 

並且遞增/遞減當一個實例被創建/ dealloc'd:

- (id) init { 
    self = [super init]; 

    initCount++; 

    return self; 
} 

- (void) dealloc { 
    [name release]; 

    initCount--; 

    [super dealloc]; 
} 

但XCode不斷警告我,「'initCount'已定義但未使用」。

有沒有辦法解決這個問題,還是我應該忽略這個警告?

+0

你可以發佈完整的.h/.m文件嗎? – Steve 2010-03-16 16:39:56

+1

蒂亞戈:你可以在聲明中初始化變量;你不需要實現'initialize' *方法*來初始化靜態變量。 – 2010-03-17 02:26:54

回答

6

它應該在你的實現文件中,而不是你的接口。如果將其放入標題,則將在導入標題的每個文件中創建一個名爲initCount的單獨變量(因爲靜態變量具有文件範圍,並且#import以文本方式插入標題的內容)。

+0

是的,解決了這個問題。謝謝。 – 2010-03-16 22:46:25

+0

Tiago:然後您應該點擊此答案旁邊的複選標記將其標記爲已接受。這樣,任何其他有同樣問題的人都可以很容易地看到你發現這是正確的答案。 – 2010-03-17 02:25:08

0

你還有一個名爲「initCount」的實例變量嗎?如果是這樣,你在你的init/dealloc方法中引用了這個,而不是全局的。

+2

我不明白爲什麼這是downvoted。我不認爲這是很可能的(因爲這很明顯,*是一個未使用的變量),但這是可能的。奇怪的事情發生了。如果你打算倒戈,請發表評論,人們 - 如果答案有問題,請告訴我們是什麼。 – Chuck 2010-03-16 17:11:46