Quelle est la différence entre NSMutableArray
et CFMutableArray
?Différence entre CFMutableArray et NSMutableArray?
Dans quel (s) cas devrions-nous utiliser l'un ou l'autre?
Quelle est la différence entre NSMutableArray
et CFMutableArray
?Différence entre CFMutableArray et NSMutableArray?
Dans quel (s) cas devrions-nous utiliser l'un ou l'autre?
CFMutableArray
et NSMutableArray
sont les équivalents C et Objective-C du même type. Ils sont considérés comme une paire de type «pont sans frais», ce qui signifie que vous pouvez lancer un CFMutableArrayRef
à un (et vice versa) et tout fonctionnera. Les cas dans lesquels vous utiliseriez l'un par rapport à l'autre sont la facilité d'utilisation (utilisez-vous C ou Objective-C?) Ou la compatibilité avec une API que vous souhaitez utiliser. Voir plus d'informations here.
Lors de l'exécution, ils sont identiques. Ils sont identiques, ils sont des types pontés sans frais - vous pouvez en toute sécurité (et efficacement) jeter l'un à l'autre.
Ce sont des types différents, disponibles dans des langages différents/se chevauchant.
CFMutableArrayRef est l'interface objet opaque C NSMutableArray * est l'interface Objective-C
Ils peuvent être intervertis librement, et la différence est la déclaration qui dit on est un pointeur vers un type opaque, contre un objc objet.
En outre, vous pouvez (sorta - il nécessite un peu plus d'implémentation que d'habitude) sous-classe NSMutableArray type en utilisant objc.
Les API d'OSX sont en couches, il existe des API de base de bas niveau qui sont auto-connectées, puis des API plus riches sont construites dessus, utilisant à leur tour les API de niveau inférieur elles-mêmes. CFMutableArray fait partie du framework CoreFoundation et est utilisé par les API de niveau inférieur.
NSMutableArray (je suppose que NS représente NextStep) fait partie du framework Foundation et est utilisé dans les API de plus haut niveau comme AppKit ou Cocoa.
Ce que vous devez utiliser dépend de l'endroit où vous travaillez. Si vous travaillez dans une interface utilisateur riche utilisant Cocoa, NSMutableArray est le bon choix. Si vous travaillez sur un démon, un pilote ou toute autre chose utilisant CoreFoundation, utilisez CFMutableArray. Heureusement, comme indiqué ci-dessus, beaucoup de ces types CF/NS sont pontés sans frais et vous pouvez donc utiliser des API CoreFoundation, par ex. Cacao sans devoir constamment convertir les types.