Qu'est-ce que NSConcreteData, et où est-elle définie?
-
12-09-2019 - |
Question
Le code suivant:
[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:mapURL]]
renvoie une instance de NSConcreteData par opposition à NSData (que je m'y attendais!). Qu'est-ce que représente NSConcreteData, exactement, et pourquoi est-il retourné au lieu d'une instance de NSData? De plus, où est cette classe définie? XCode se plaint qu'il n'a pas été défini, mais je ne sais pas ce que je dois inclure afin d'obtenir la classe.
Toute aide appréciée!
La solution
Le framework Foundation utilise des clusters de classe dans certains domaines pour fournir une interface commune à différentes classes. Ce que cela signifie est que, lorsque vous utilisez une API NSData
pour créer un objet NSData
, la classe réelle qui est instancié et retourné est différent de NSData
, mais peut et doit être traité et appelé un objet NSData
par votre code.
A la fin de la journée, la réponse est simple:. Ignorer l'existence de NSConcreteData
et de la traiter comme NSData
Pour plus d'informations sur les clusters de classe, s'il vous plaît voir la section Clusters classe d'Apple Cocoa Fundamentals Guide .