3

私は Mac を購入したばかりで、Microsoft と C# の強力な背景を持つ Snow Leaped の XCode を使用して、Cocoa と Objective-C を使用したソフトウェア開発を検討し始めています。

私が読んだすべてのドキュメントとチュートリアルでは、Interface Builder と XCode を使用して、ユーザー インターフェイスを備えたアプリケーションを作成しています。私の現在の理解では、Interface Builder によって作成されたオブジェクトは何らかの方法で .xib ファイルで定義され、実行時に作成されるということです。

バンドルには、それに付随するコードとリソースが含まれています。.xib ファイルは実際には UI リソースを含むバンドルであり、このバンドルは実行時に読み込まれ (正しい動詞ですか?)、オブジェクト インスタンスが作成されると言うのは正しいですか?

abive が true の場合、Interface Builder によって生成されたコードと、これらのオブジェクトが作成されたコード内のポイントを確認できる方法はありますか?これを一度も見なくても、多くの「魔法」が起こっているように感じます。私の学習のこの段階では私を助けてくれません。

C#/WinForms と Objective-C/Mac OS/Cocoa の間の明白なパラダイム シフトを把握するために読むべきものはありますか?

4

2 に答える 2

2

理解すべき重要な点は、通常の意味でのコードがないということです...少なくとも、nib/xib UI リソースは、単に Inteface Builder によって生成された目的の c コードの構成要素ではありません。これらは、ペン先で一種の「凍結」され、アプリで必要なときに「凍結解除」されるオブジェクトです (または、awakeFromNib が示唆するように、目覚めます)。それらは、objective-c ソース コードを生成するためのフレームワークではなく、xml/plist/etc 形式でアーカイブされています。

xml またはその他のデータとしてシリアル化されたオブジェクトと考えてください。

于 2009-09-21T10:28:12.947 に答える
2

.xib ファイルは実際には UI リソースを含むバンドルであり、このバンドルは実行時に読み込まれ (正しい動詞ですか?)、オブジェクト インスタンスが作成されると言うのは正しいですか?

いいえ。バンドル特定のディレクトリ構造の 1 つであり、xib ファイルはディレクトリではなく通常のファイルです。

xib ファイルには、オブジェクトの説明が含まれています。nib をコンパイルすると (通常はアプリのビルドの一部として)、nib コンパイラは xib を読み取り、そこに記述されているようにオブジェクトを作成し、バンドルではない nib にアーカイブします。

アプリケーションに nib をロードすると、nib ローダーはオブジェクトをアンアーカイブし、すべてのアウトレットがオブジェクト間およびファイルの所有者との間で IB に接続されていることを確認します。

実装の詳細について心配する必要はありません。ニブはただ働く。あなたがしなければならないことは次のとおりです。

  1. xib ファイルを作成します。バージョン管理を使用している場合、これらは追跡するように指示するものです。
  2. それらが .lproj フォルダーにあることを確認してください (ローカライザーがそれらのローカライズされたバージョンを作成できるようにするため)。
  3. 残りは Xcode に任せてください。
于 2009-09-21T11:55:03.350 に答える