2012-07-11 16 views
18

He estado programando en Objective-C Cocoa por un tiempo usando NSObjects, etc. Veo que hay otro framework: CoreFoundation. Cuando lo miro, parece ser un framework C-Style.¿Cuál es el propósito del marco de CoreFoundation?

Así que tengo algunas curiosidades que me gustaría aclarar. Busqué en Google pero no encontré ninguna respuesta directa.

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

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

Respuesta

17

Historia: La Fundación data de ~ 1993/1994 y las API contenidas en ella formaban parte de las API OpenStep publicadas por NeXT.

¿Cuál es el propósito de CoreFoundation framework?

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

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

¿El Marco Cocoa ya no ofrece todo lo que necesita?

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

¿El CoreFoundation Framework proporciona alguna ventaja que el CocoaFramework no proporciona?

Varios, pero en general a costa de una menor simplicidad y una mayor fragilidad.

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

+0

Parece que aunque Core Foundation proporciona una API que se puede llamar por código C puro, cualquier ejecutable que genere utilizando Core Foundation incluye su código C ADEMÁS de la biblioteca de tiempo de ejecución Objective-C (libobjc.dylib) y opera (se inicia , etc.) como un ejecutable de estilo Objective-C con referencias vinculadas dinámicamente. – Colin

2

El marco de Core Foundation proporciona la misma funcionalidad que el framework Foundation, pero en C en lugar de Obj-C para que se pueda usar con frameworks C.

Si miras a tu alrededor va a ver que Apple tiene unos marcos de C como núcleo de gráficos, Core Audio, libreta de direcciones, etc.

+1

En realidad, CF tiene grandes trozos implementados en Objective-C y algunas de las API son envoltorios alrededor de sus homólogos de Objective-C, y no al revés ... – bbum

16

CoreFoundation es algo más que una alternativa basada en C para la Fundación. En términos excesivamente simplificados, Foundation esencialmente es CoreFoundation, ya que uno está construido uno encima del otro. Muchas de las clases de Foundation son simplemente envoltorios ligeros de Objective C alrededor de su contraparte de CoreFoundation, que es cómo funciona el puente gratuito (por ejemplo, CFString y NSString).

Para obtener más información y una explicación mucho más técnica, consulte this article.

Si realmente desea leer la fuente de CoreFoundation, hay disponibles varias versiones del marco "CFLite" de Apple como referencia here.

+0

+1 para el excelente enlace. pero, no puedo elegir dos respuestas. BBum respondió las 3 preocupaciones. –

+1

@ user76859403 No hay problema, y ​​vaya por la respuesta de bbum. Es el mejor. –

Cuestiones relacionadas