Что такое NSConcreteData и где он определен? - PullRequest
13 голосов
/ 11 июля 2009

следующий код:

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

возвращает экземпляр NSConcreteData в отличие от NSData (что я ожидал!). Что конкретно представляет NSConcreteData и почему он возвращается вместо экземпляра NSData? Кроме того, где этот класс определяется? XCode жалуется, что он не был определен, но я не знаю, что мне следует включить, чтобы получить класс.

Любая помощь приветствуется!

1 Ответ

19 голосов
/ 11 июля 2009

Фреймворк Foundation использует кластеры классов в определенных областях, чтобы обеспечить общий интерфейс для различных классов. Это означает, что когда вы используете NSData API для создания NSData объекта, фактический класс, который создается и возвращается, отличается от NSData, но может и должен рассматриваться и именоваться NSData объект по вашему коду.

В конце дня простой ответ таков: игнорируйте существование NSConcreteData и относитесь к нему как NSData.

Дополнительные сведения о кластерах классов см. В разделе «Кластеры классов» руководства Apple по основам какао .

.
...