Quelle est la différence entre Objective-C et Cocoa?

Je viens juste d’apprendre la programmation Objective-C / Cocoa pour Mac. Tous les tutoriels, livres, blogs, podcasts, etc. que j’ai utilisés couvrent vraiment les deux ensemble. Existe-t-il un moyen facile de déterminer quels objects sont en vanille Objective-C et ceux qui proviennent de Cocoa?

Objective-C est le langage … il définit toutes les choses comme les mots-clés pour définir des objects, la syntaxe de l’object de messagerie, etc.

Cocoa est un framework de développement (il s’agit en fait d’un framework parapluie qui combine trois autres frameworks, Foundation, AppKit et CoreData).

Ces frameworks (Cocoa) définissent tous les objects intéressants à utiliser et à interagir avec le système d’exploitation, ainsi qu’un certain nombre de fonctions. Par exemple, Cocoa définit des choses comme NSSsortingng et NSObject . Cocoa peut actuellement être utilisé avec d’autres liaisons de langage, telles que python ou ruby, et être également utilisé avec Java. Donc, si vous utilisiez Cocoa avec Java, vous auriez toujours un object NSSsortingng , mais vous l’appeleriez et l’utiliseriez depuis une application Java.

Sans lien avec l’un des frameworks Cocoa, Objective-C ne contient qu’une classe Object très basique en tant que classe racine prédéfinie.

Objective-C est la langue elle-même.

Cocoa, anciennement NextStep, est l’API et le moteur d’exécution situés sur Obj-C. Tout ce qui commence par NS (pour NextStep) fait partie de Cocoa, ne fait pas partie du langage.

Bien sûr, c’est assez facile – Objective-C est le langage, Cocoa est l’API / bibliothèque que vous utilisez pour construire votre application Mac.

Regardez dans / usr / include / objc / – il y a purement Objective-C. Tout le rest est du cacao. Vous remarquerez peut-être que vous n’utilisez presque jamais rien directement.

Cependant, dans la pratique, cela fait peu de différence. Cocoa est la bibliothèque standard Objective-C de facto. La seule plate-forme sur laquelle Objective-C est utilisé sans Cocoa est Portable Object Comstackr , et je suppose que trois personnes l’utilisent toujours.