從Java來了,我寫:如何投射到一個NSObject的數組?
NSObject* obj[] = (NSObject* []) [self getResult];
,編譯器抱怨Cast to incomplete type 'NSObject *[]'
什麼是對象轉換對象的數組的正確方法?
謝謝。
從Java來了,我寫:如何投射到一個NSObject的數組?
NSObject* obj[] = (NSObject* []) [self getResult];
,編譯器抱怨Cast to incomplete type 'NSObject *[]'
什麼是對象轉換對象的數組的正確方法?
謝謝。
假設getResult
返回一個對象,你想要什麼是對象的數組,Xcode的4.4的,你可能會使用:
NSArray *objects = @[ [self getResult] ];
這將創建一個(不變)陣列只包含一個對象 - 無論getResult
的結果如何。
在Objective-C數組中可能包含任何對象;您不會創建數組來保存特定類型的對象。
考慮到您對語言和庫的新認識:您通常會使用集合類型,例如NSArray
。同樣,-getResult
將返回NSArray
。
還要注意的是,在ObjC,類型轉換字面上傳遞NSObject
型指針作爲另一種類型 - 不存在隱含的推廣(如你在Java中看到)。如果您想將NSObject
降頻爲NSArray
,則可以使用NSArray * array = (NSArray*)[self getResult];
。同樣,沒有促銷 - 如果結果是NSString
,那麼您在運行時仍然在處理NSString
。
Tommy的答案(+1)演示瞭如何創建包含一個元素的NSArray
- 另一種編寫該方法的方法不依賴於最新的編譯器功能NSArray * array = [NSArray arrayWithObject:[self getResult]];
。
感謝您的精心解答!我接受了Tommy的解決方案,因爲它也向我解釋瞭如何簡單地初始化我的陣列。 – Eir
你應該看看使用內置的數組類。無論是NSArray
或NSMutableArray
它是一個NSArray還是一個普通的C數組? – 2012-09-26 19:40:25