objective-c cocoa core-foundation

objective c - ¿Cuál es el propósito del marco CoreFoundation?



objective-c cocoa (3)

He estado programando en Objective-C Cocoa por un tiempo usando NSObjects, etc. Veo que hay otro marco: CoreFoundation . A medida que lo examino , parece ser un marco de C-Style.

Así que tengo algunas curiosidades que me gustaría aclarar. He buscado en Google pero no he encontrado respuesta directa.

  1. ¿Cuál es el propósito del marco CoreFoundation?
  2. ¿No proporciona Cocoa Framework todo lo que ya se necesita?
  3. ¿El marco de CoreFoundation proporciona alguna ventaja que el marco de Cocoa no proporciona?

Estas son algunas de las preguntas que tengo. Si alguien puede proporcionar una respuesta, o proporcionarme recursos para leer sobre eso, sería genial. Me pregunto si vale la pena aprender más sobre el marco.


CoreFoundation es más que una alternativa basada en C a Foundation. En términos demasiado simplificados, Foundation es esencialmente CoreFoundation, ya que uno está construido sobre el otro. Muchas de las clases en Foundation son solo envoltorios livianos de Objective C alrededor de su contraparte CoreFoundation, que es la forma en que funciona el puenteo gratuito (por ejemplo, CFString y NSString).

Para más historia, y una explicación mucho más técnica, consulte este artículo .

Si realmente desea leer la fuente CoreFoundation, varias versiones del marco "CFLite" de Apple están disponibles para referencia here .


El marco de Core Foundation proporciona la misma funcionalidad que el framework de Foundation pero en C en lugar de Obj-C, de modo que se puede utilizar con los frameworks de C.

Si miras a tu alrededor, verás que Apple tiene algunos marcos en C, como Core Graphics, Core Audio, Agenda, etc.


Historia: La Fundación se remonta a ~ 1993/1994 y las API de la misma eran parte de las API de OpenStep publicadas por NeXT.

¿Cuál es el propósito del marco CoreFoundation?

CF se creó durante la transición de Mac OS a Mac OS X para ayudar a respaldar esa transición. Inicialmente, se hizo tanto por velocidad como para permitir que se escribieran programas puramente no-Objective-C. Con el tiempo, eso ha demostrado ser un problema y la CF tiene cada vez más bits que se implementan en Objective-C (eche un vistazo al binario CoreFoundation usando algo como el otool).

CFLite es una variante liviana, portátil, pura C (IIRC).

¿No proporciona Cocoa Framework todo lo que ya se necesita?

Más o menos. Y, ciertamente, más para crear aplicaciones GUI en iOS o OS X.

¿El marco de CoreFoundation proporciona alguna ventaja que el marco de Cocoa no proporciona?

Varios, pero generalmente a un costo de disminución de la simplicidad y aumento de la fragilidad.

Por ejemplo, las colecciones de CF le permiten personalizar completamente cómo se gestiona la memoria y cómo se identifican los objetos; puede proporcionar asignación personalizada / libre / hashing / enlaces de comparación. A través de esto, puede "fácilmente" encapsular tipos que no son de Objective-C en colecciones de CF.