22

NSObjectsなどを使用してしばらくObjective-CCocoaでプログラミングしてきました。別のフレームワーク、CoreFoundationがあることがわかります。見てみると、Cスタイルのフレームワークのようです。

ですから、私はいくつかの好奇心を明らかにしたいと思います。私はグーグルで検索しましたが、直接の答えは見つかりませんでした。

  1. CoreFoundationフレームワークの目的は何ですか?
  2. Cocoa Frameworkは、すでに必要なすべてのものを提供していませんか?
  3. CoreFoundation Frameworkは、CocoaFrameworkが提供しない利点を提供しますか?

これらは私が持っている質問のいくつかです。誰かが答えを提供したり、それについて読むためのリソースを私に提供したりできれば、それは素晴らしいことです。フレームワークについてもっと学ぶ価値があるかどうか疑問に思います。

4

3 に答える 3

20

CoreFoundation は、Foundation の単なる C ベースの代替手段ではありません。単純化しすぎた用語ですが、Foundation は基本的CoreFoundation です。Foundation のクラスの多くは、対応する CoreFoundation の軽量の Objective C ラッパーにすぎません。これが、フリー ブリッジの仕組みです (例: CFString と NSString)。

詳細な歴史と技術的な説明については、この記事を参照してください。

実際に CoreFoundation のソースを読みたい場合は、Apple の「CFLite」フレームワークのいくつかのバージョンを参照できます

于 2012-07-11T16:09:51.003 に答える
20

歴史: Foundation は ~1993/1994 にさかのぼり、そこに含まれる API は NeXT によって公開された OpenStep API の一部でした。

CoreFoundation フレームワークの目的は何ですか?

CF は、Mac OS から Mac OS X への移行中に作成され、その移行をサポートするのに役立ちました。最初は、速度と、Objective-C 以外の純粋なプログラムを作成できるようにするために行われました。時間が経つにつれて、それは問題ではないことが証明され、CF には Objective-C で実装されるビットがますます増えています (otool のようなものを使用して CoreFoundation バイナリを見てください)。

CFLite は、軽量でポータブルなピュア C (IIRC) バリアントです。

Cocoa フレームワークは、すでに必要なものをすべて提供していませんか?

多かれ少なかれ。そしてもちろん、iOS または OS X で GUI アプリケーションを構築する場合も同様です。

CoreFoundation フレームワークには、CocoaFramework にはない利点がありますか?

いくつかありますが、一般的に単純さの低下と脆弱性の増加を犠牲にしています。

たとえば、CF コレクションを使用すると、メモリの管理方法とオブジェクトの識別方法を完全にカスタマイズできます。カスタム割り当て/無料/ハッシュ/比較フックを提供できます。これにより、Objective-C 以外の型を CF コレクションに「簡単に」カプセル化できます。

于 2012-07-11T16:40:01.740 に答える
3

Core Foundation フレームワークは、Foundation フレームワークと同じ機能を提供しますが、Obj-C ではなく C で提供されるため、C フレームワークで使用できます。

周りを見渡すと、Apple には Core Graphics、Core Audio、Address book などの C フレームワークがいくつかあることがわかります。

于 2012-07-11T15:56:08.837 に答える