2011-12-08 42 views
3

我沒有足夠的C知識來解決這方面的問題。我可以使用類方法來設置靜態變量嗎?

我有大量的NSManagedObjects這是從我目前正在工作的級別下降 - 我的視圖控制器正在顯示一個父對象的表,其中顯示的每個對象的詳細指標顯示子對象的數量。

用戶可以創建一組存儲在NSDictionary中的過濾條件。我的子對象有一套複雜的計算,它們根據這些標準來執行,以確定它們是通過還是不通過過濾器。這由一個簡單的只讀布爾屬性在外部表示。

我想要做的是在子對象中有一個靜態變量來存放過濾器設置字典,這樣我就不必調用用戶默認值或類似的方法來獲取每個子對象的過濾器設置。

在用戶創建過濾器設置的時候,我沒有任何特定的指向子對象的指針,並且我不想創建一個獲取請求只是爲了獲得一個 - 所以會有東西像這樣適合?

.H:

@interface Child : NSManagedObject 
+(void)setFilterSettings:(NSDictionary*)newFilterSettings; 
@end 

.M:

static NSDictionary *filterSettings; 

@implementation Child 

+(void)setFilterSettings:(NSDictionary*)newFilterSettings 
{ 
    filterSettings = newFilterSettings; 
} 
@end 

當過濾器的設置是由:

[Child setFilterSettings:newFilterSettings]; 

假設這是有效的,有什麼東西,做我需要做內存管理?我正在使用ARC。

+0

是的,你可以;但它不是C(如在你的標題中),但是Objective C –

+0

@BasileStarynkevitch - 它使我困惑的靜態變量的範圍,它們存在於C中還是僅僅是objective-C? – jrturton

+1

@hypercrypt - 他們都是 – jrturton

回答

2

上述代碼沒有任何問題。這是實現類變量的標準方式,這在ObjC中並不存在。

(附註:我ARC一個巨大的風扇,每個人都應該儘快,因爲他們可以使用它,但是當我看到一個不保留二傳手我還是本能地抽搐......)

+0

除了應該有一個get訪問器,代碼沒有問題。 – JeremyP

+0

將'__strong'在靜態變量上是否正確?編譯器似乎允許它。 –

+0

@JeremyP - 我只需要它內部的子對象,我真的需要一個get訪問器,我打算直接在實例方法中使用變量。 – jrturton

相關問題