2012-10-28 14 views
1

如果我有這樣的方法:Objective-C在返回時是否隱式地將NSMutableArrays類型轉換爲NSArrays?

-(NSArray *)methodThatReturnsAnArray; 

這是它的實現:

-(NSArray *)methodThatReturnsAnArray { 

    NSMutableArray *aMutableArray = [[NSMutableArray alloc] init]; 
    [aMutableArray addObject:@"some string"]; 
    return aMutableArray; 
} 

威爾Objective-C的隱式轉換aMutableArrayNSArray,當它返回,還是我來指定像這樣:

return (NSArray *)aMutableArray; 
+0

@ H2CO3 - 該文件幫助了很多。謝謝! – pasawaya

回答

3

NSMutableArrayNSArray的子類,所以是的,你不必做類型轉換。這是教科書subtype polymorphism

0

您可以簡單地返回NSMutableArray對象,因爲它是一個子對象夫人NSArray

請注意,它仍然是一個可變數組。通常這不是問題,但如果你想確保它不可變,你必須創建一個新的實例或一個副本。

return [NSArray arrayWithArray:aMutableArray]; 
2

如同在一般的面嚮對象語言inheritance,由於從NSMutableArrayNSArrayIS ANSArray在所有效應延伸。

你並不需要把它轉換爲NSArray,因爲它已經是一個NSArray,或者在實踐中,它能夠把所有信息都應對其中NSArray會如此it can be used in replacement to it迴應。

0

轉換不會改變對象的類型。它只是告訴編譯器,它應該假設它是某種類型的對象。但是(NSArray *)aMutableArray仍然是一個NSMutableArray。

相關問題