2009-07-11 109 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

相关问题