2011-11-04 75 views
1

NSMutableArray可以存儲每個NSObject,但我可以提到NSMutableArray只能存儲我的項目,例如,一個只存儲NSString的NSMutableArray? 我記得java數組可以做到這一點,目標C數組可以做類似的事情嗎?謝謝。NSMultableArray可以提到NSMultableArray中的哪個對象嗎?

+0

所以你不想在你的陣列中的任何其他對象,但NSString?是對的嗎? –

回答

1

Objective-C在NSArray/NSMutableArray上沒有這種通用約束。因此,您有兩種解決方案:

  • Subclass NSArray/NSMutableArray並檢查元素類型。由於NSArray/NSMutableArray是一個類「集羣」,並且對子類不明顯,所以非常不鼓勵。
  • Create a category使用檢查正確類型的特定方法。您將擁有該類型的編譯時執行。
0

,您可以嘗試這樣的 -

NSMutableArray *arr = [[[NSMutableArray alloc] init] autorelease]; 
if([obj isKindOfClass:[NSString class]]) 
    [arr addObject:obj]; 

這樣你最終只NSString添加到您的編曲。

0

不是默認情況下,沒有。 NSArray及其可變對象只是存儲指向obj-c對象的指針。這些對象可以是任何類型的。這將取決於你確保只有NSString得到你的數組。

您可能會繼承NSArray的子​​類,並重寫addObject:方法,以便在嘗試添加非NSString對象時引發異常。

相關問題