Cocoa プラットフォームは現在、macOS、iOS/iPadOS、watchOS および tvOS SDK という 4 つの別々のフレーバー、またはサブプラットフォームで表現されています。 各 SDK は、通常「フレームワーク」と呼ばれる個別のライブラリで構成されています。
Objective-C 側では、各フレームワークは、バイナリ (Windows の .dll
に相当する .dylib
) と Objective-C ヘッダー ファイルの両方を含む .framework
拡張子のバンドルとなっています。 Elements では、SDK 内の各フレームワークは、ヘッダーからすべてのメタデータを集約した .fx ファイルで表され、Elements コンパイラーが消費しやすく、高速になります。
Elements には、4 つの SDK の最新バージョンに付属する標準 Apple SDK のすべてのフレームワーク用の .fx
ファイル(および一部の古いバージョン用)があらかじめ作成された状態で付属します。 フレームワークの多くは、いくつかの、あるいはすべての SDK で共有され、すべてのサブプラットフォーム間でコンパイルおよび共有できるコードを書くための膨大なクラス ライブラリを提供する一方で、各 SDK はプラットフォーム固有のフレームワークも多数提供していることがわかります。
- All macOS SDK Frameworks
- All iOS SDK Frameworks
- All tvOS SDK Frameworks
- All watchOS SDK Frameworks
- All Mac Catalyst Frameworks
これらのフレームワークをより詳しく見ていきましょう。
Foundation
Cocoa アプリケーションにとって最も重要なフレームワークは、おそらく Foundation フレームワークでしょう。 これには、NSString
や NSArray
などの単純で重要な型から、ディスク アクセス用の NSFileManager
、通知を扱うための NSNotificationCenter
、ネットワーク リクエストを扱うための NSURL*
クラスなどのコア OS サービスへのアクセスを提供するクラスなど、NS*
プレフィックスを持つ標準クラスのほとんど (GUI クラスを除けば、それについては後で説明) が含まれ、
詳細は Foundation.fx
でお読みいただけます。 これは、すべての Cocoa サブプラットフォームで利用可能です。
ユーザー インターフェイス。 AppKit vs. UIKit vs. WatchKit.
ユーザー インターフェイス開発の領域に入ると、iOS、watchOS、tvOS、および macOS SDK の間の類似性はなくなりますが、これには理由があり、これらのプラットフォーム上のアプリケーションの UI は大きく異なるからです。 このため、SDK は 3 つの非常に異なるフレームワークを提供します。
AppKit
は macOS SDK にのみ含まれ、Mac アプリケーションの作成に必要なすべてのクラスとコントロールを提供します。 レガシーな理由により、これらのクラスのほとんどは Foundation と共通のネーミング プレフィックスを持ち、NS*
で始まり、使用するクラスには NSWindow
、NSButton
、NSTableView
などのものがあります。 多くの概念は AppKit と UIKit で共有されますが、クラスは異なる &mdash があります。 たとえば、両方のフレームワークには色を表すクラスがあり(それぞれ NSColor
と UIColor
)、非常によく似た動作をしますが、UINavigationController
や UITabBarController
などの定義済みコントローラの使用など、UIKit にかなり固有の概念もあります。
WatchKit
は最後に、Apps、Glances、および Notification の観点から Apple Watch 用の UI を構築するために watchOS で使用されています。 (ウォッチ フェイスの Complication を構築するための ClockKit
もあります。) WatchKit は UIKit とは異なる、よりシンプルな UI デザイン用のアプローチを使用します。
異なるフレームワークは、開発者にアプリケーション UI を一から考え直し設計するよう迫りますが、これは良いことです。
しかし、フレームワークの背後にある多くの概念は類似しており、1 つのフレームワークでアプリケーションを作成することを学べば、多くの場合、他のフレームワークに容易に移行できることに気づくでしょう。 たとえば、3 つのフレームワークすべてが、実際の UI をそれを駆動する「コントローラー」クラスから分離するために、モデル-ビュー-コントローラーのパラダイムを受け入れています。 これは最初の UI を作り始めた瞬間に明らかになります。.NET のように独自の Window や View クラス(iOS はシングルウィンドウのため、UIKit アプリケーションは主にウィンドウではなくビューで考えます)をコードで実装するのではありません。
Working with XIB Files の記事など、このドキュメント サイトの他のトピックでは、これらの概念についてより詳細に説明しています。 このフレームワークは、Foundation と AppKit をバンドルしたものに過ぎません。 プラットフォーム全体を指す「Cocoa」という用語の一般的な使用と混同しないでください。
More Specific UI Frameworks
両方の SDK には、AppKit と UIKit の上に構築して、より高度または特定の UI 要素へのアクセスを提供する追加のフレームワークが含まれています。 また、アプリケーションがシステム サービスと対話できるようにするフレームワークも多数あります。 (すべてのプラットフォーム間で共有)など、その他にも多数。 AppKit/UIKit 以外のユーザー インターフェイスを開発する場合、両方の SDK は、より低レベルの UI で作業できるフレームワークも提供します。 Elements では、コア SDK フレームワークに加えて、その動作に不可欠な Cocoa アプリケーションは、それが参照に明示的にリストされているかどうかにかかわらず、自動的に System Services
Lower-level Frameworks
rtl.fx, libToffee.fx, libSwift.fx
.fx
ファイルが 3 つ追加されています。
rtl.fx
は Foundation フレームワークよりもさらに基本的で、macOS、iOS、watchOS および tvOS のコア UNIX システムを構成するすべての低レベル C スタイル API が含まれており、Grand Central Dispatch および CommonCrypto などのライブラリも含まれています。 基本的に、rtl.fx は /usr/include
.libToffee.fx
のヘッダーの大部分を表し、Elements コンパイラー自体にとって重要なヘルパー タイプが含まれています。 たとえば、Future Types、汎用 NSArray<T>
および NSDictionary<T>
型、LINQ サポートなどの内部サポートを含みます。libSwift.fx
は Swift 言語に固有の追加の型と関数を提供します。rtl.fx
を参照することになります。 libToffee.fx
と libSwift.fx
への参照はオプションです。libToffee.fx
または libSwift.fx
への参照を必要とする機能が使用され、それらが参照されていない場合、コンパイラは警告/エラーを表示します。