2009-07-11 126 views
13

下面的代碼:什麼是NSConcreteData,它在哪裏定義?

[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:mapURL]] 

返回NSConcreteData的實例,而不是NSData的(這是我預料到的!)。 NSConcreteData究竟代表什麼,它爲什麼被返回而不是NSData的實例?此外,這個類在哪裏定義? XCode抱怨它沒有被定義,但我不知道我應該包括什麼來獲得課程。

任何幫助表示讚賞!

回答

19

Foundation框架在某些領域使用類集羣爲各個類提供通用接口。這意味着,當您使用NSData API來創建一個NSData對象,被實例化和返回的實際類是NSData不同,但可以而且應該被處理,被稱爲NSData對象的代碼。

在一天結束時,簡單的答案是:忽略NSConcreteData的存在並將其視爲NSData

有關類集羣的更多信息,請參閱Apple的Cocoa Fundamentals Guide的Class Clusters部分。

+4

我發現我的問題的根源是在 檢查[子isMemberOfClass:[NSData的類]的 代替 [子isKindOfClass:[NSData的類] 後者返回true,如果子是一個從NSData派生的類的實例,而前者不會。 乾杯! – Codebeef 2009-07-11 15:08:25

相關問題