2012-01-14 5 views
7

私はiOS開発が初めてです。私はオンラインで見つけたソースコードのいくつかを読んだことがあり、それらの多くには単一のnibファイルが含まれていません。すべてのビューはコードから手動で描画されているようです。nibファイルを使用する必要がありますか?使用しないでください。

nibファイルを持つ/持たないことのメリットは何ですか?ストーリーボードや* .xibファイルのような視覚化できるものではなく、コードからすべてを作成する理由は何ですか?

+0

「ストーリーボードはiOS 5以降でサポートされている です。新しいプロジェクトではデフォルトで有効になっています。ただし、iOSの バージョンで実行する必要がある場合は、ストーリーボードは使用できません。 nibファイルを使用してください。 (iOSアプリケーションプログラミングガイド©Apple Inc)。 – Kenneth

答えて

5

標準的なMainWindow.nibのようなローカライズされたコンテンツを持たず、1行のコードで再現できる非常に単純なペンがあります。そのような場合、コードはペン先をアーカイブ解除するよりもはるかに高速です。

非常にダイナミックなレイアウトがあり、ペン先としては記述できません。

それぞれのケースで最も便利で効率的な方法を選択する必要があります。トレードオフがあり、賢明に選ぶだけです。

7

コードでビューを作成する理由はたくさんあります。

  • のnib-ファイルがレイジーロードされており、ユーザーはあなたがIBのすべてを設定することはできませんし、多くのビューは、いくつかの空想のエキストラ
  • が必要
  • のように、時にはそれは簡単ですいけない反応が顕著不足にいつかつながりますただ
  • 一緒にダウンし、必要なすべてのものをクリックしてドラッグするよりも
  • のビューを書くために...

私が最も重要な理由は、パフォーマンスと機能の欠如だと思います。

簡単なボタンとラベルだけで簡単な情報を表示したいときや、プロトタイプ作成のときには、nibファイルを使用しています。

11

私がコードを好きな最大の理由は、ソースコントロールではうまく違います。 XIBは、diff、merge、readが非常に難しいです。

保存されたスニペットをコピー/ペーストするコードも簡単です。 IBでは、私はいつも魔法が働いていないのか疑問に思ういくつかのチェックボックスを忘れてしまいます。私のメモにはコードスニペットがあります。

IBが本当に優れているのは、レイアウトとヒューマンインターフェイスのガイドライン(コントロール間のピクセル数... guiedlines)を手助けすることです。

私の個人的な好みはIBのレイアウトと他のすべてのコード(ターゲット、アクション、列の追加など...など)です。動的なシナリオでは、IBが崩壊し、カスタムビューが完成します。

ここでは、関連のポストです:

Interface Builder (XIB) or Code when merging in a team environment?

9

あなたはニブとなぜあなたはいけないを使用する必要がある理由の多くの理由があります。決定的な答えはなく、それぞれの答えはあなたが何をする必要があるかによって異なります。

Nibsが提供する明らかな利点(スムーズなUI作成プロセス、.mファイルのビュー構築コードを最小限に抑える)とは別に、他の方法では見つけられないものを提供します。あなたのアプリケーションを他の言語にローカライズしている間、あなたは説明するために2〜3語を取るフレーズやものにつまずくでしょうが、別の言語ではただ1つを取るだけです。これは、異なるローカリゼーションを使用すると、View Controller内の誤った配置のビューでエラーに真剣につながります。したがって、Xcode 4の各ペン先に2〜3つのサブペンを付けて、好きなようにローカライズして、言語に応じてビューの再配置を心配することなく、ボタンやビューを適切な場所に配置することができます。ユーザーは持っています。コードを使用してこれをすべて行う必要があった場合は、どこにいてもifを配置する必要があります。これは確かにプログラミングの習慣が悪く、エラーが発生する可能性があります。

インターフェイスビルダーを使用しなかった場合、ビューをセットアップするために何百もの行が必要なビューコントローラを作成しました。

ただし、すべてのNIBはHTML/XMLで書かれたビュー記述子であり、ビューが作成される前にファイルをディスクから読み込んで分析する必要があるため、NIBはプログラムによるビューの作成のパフォーマンスを達成できません。ペン先には、プレーンコードが持つカスタマイズオプション(ドロップシャドウ、ラウンドコーナー、その他のQuartzマジック)もありません。これらのカスタマイズオプションは、コードを使用して同じ結果を達成するには多くの方法があるため、上位レベルのCore Animationレイヤーと話し合うか、QuartCoreとCGGraphicsを直接処理したり、ケース(レイヤーを使用するシャドウは非常に遅くなる可能性があります)。だから、アップルは開発を特定の描画方法に制限したくない。

NIBが存在します。アプリケーションでは、NIBを作成する理由を理解する必要があります。コードをアウトレットに接続し、ローカリゼーションを容易にし、開発をスピードアップし、コードをクリーンアップするためにペン先が存在します。プロジェクト内では必ずNibsを使用する必要がありますが、単純なコードでも最小限の似たような作業で同じ結果が得られる場所で使用することは避けなければなりません。

最後に、メモリ管理を考慮してください。 Nibを使用すると、IBOutletsのような割り当てられたオブジェクトの割り当てが解除されます。あなたが作成したIBOutletがあなたが望むときに割り当て解除されることが確実であれば、NIBを使用しないでください。代わりにプレーンコードを使用してください。

0

私はxibsから始めます。 UIを完成させたら、xibsをコードに移行してください。このようにして、あなたは両方の世界のベストを得ます。 XIBsは遅くなる可能性があり、400KBのXIBSを見たことがあります(まれですが)。 XIBsは、nibファイル、ひいてはオブジェクトグラフ-も文書の外に住むオブジェクトを参照するために使用されているプレースホルダオブジェクトが含まれているが、それは内のオブジェクトへの参照を持っていることがあります...しかし

1
A nib file is a special type of resource file that you use to store the user interfaces of iOS and Mac apps. A nib file is an Interface Builder document. You use Interface Builder to design the visual parts of your app—such as windows and views—and sometimes to configure nonvisual objects, such as the controller objects that your app uses to manage its windows and views. In effect, as you edit an Interface Builder document, you create an object graph that is then archived when you save the file. When you load the file, the object graph is unarchived. 

間違いcruftyですまたはドキュメント内のオブジェクトが参照を持つ可能性があります。特殊なプレースホルダはFile's Ownerです。

実行時に、loadNibNamed:owner:またはその変形メソッドを使用してnibファイルをロードします。ファイルの所有者は、そのメソッドの所有者パラメータとして渡すオブジェクトのnibファイル内のプレースホルダです。 Interface Builderのnibファイル内のFile's Ownerとの間で確立する接続は、実行時にファイルをロードすると再確立されます。

iOSは、iOSユーザーインターフェイスのデザインレイアウト形式であるストーリーボードをサポートする実装の詳細としてnibsを使用します。ストーリーボードでは、1つのキャンバス上にアプリのユーザーインターフェイス全体をデザインして視覚化することができます。 iOS開発者にとっては、ユーザーインターフェイスを設計する際にはストーリーボードを使用することをお勧めします。

関連する問題