web-dev-qa-db-ja.com

どちらがより効率的な方法ですか? StoryBoardまたはXIB?

私の質問は私のタイトルが示唆するものとわずかに異なります。私はxibで働いてきました。今、私は絵コンテで作業しようとしています。私の質問は、あるクラスを別のクラスからナビゲートする場合、StoryBoardはより良いメモリ管理に利益をもたらすかどうかです。 ViewControllerAとViewControllerBの2つのViewControllerがあるとします。 ViewControllerA-> ViewControllerBを通過しようとしています。さて、Xibでのアプローチは以下のとおりです。

ViewControllerB *VCB = [ [ViewControllerB alloc] init];
[self.navigationController pushViewController: VCB Animated: YES];

ストーリーボードのどこに、

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"Second"])
    {
        SecondViewController *objSecond = (SecondViewController*)[segue destinationViewController];

    }
}

そして、やります、

[self performSegueWithIdentifier:@"Second" sender:self];

だから、私の質問は、私たちのクラスをXibに割り当て、storyBoardのどこにいないのかです。ストーリーボードにメモリ割り当ての利点はありますか?

25
Sharma Vishal

どれが一番良いかを言うことではありません。なぜなら、チームの要件に基づいて、どちらを伝えるのが良いかということです。

単一の開発者の場合、ストーリーボードを使用すると時間を節約できるため便利です。チームが多くの開発者で構成されている場合はxibを使用します。それ以外の場合は、モジュール/タスクをマージするのは簡単ではありません。

xcode-using-storyboards-and-xibs-versus-creating-views-programmatically

XIBを使用する

利点:

  • UIをすばやくまとめることができます

  • 最小限の画面で小さなアプリを簡単に実装

  • 異なるローカライズ(つまり、言語または国)に個別のXIBを使用できます。

  • 要素のレイアウトと視覚的な不整合の発見に最適です。レイアウトを微調整するのは簡単です

欠点:

  • チーム環境で作業する場合、競合をマージすることは困難です(比較、マージ、読み取りが困難です)

  • 非常に動的なビューは、XIBとして記述することはできません

  • パフォーマンスに関しては、xibをディスクから読み取って分析/解析する必要があるため、コードを使用してビューを作成するよりも時間がかかります。

  • XIBには、Quartzのようなコード(ドロップシャドウ、丸いコーナー)で実行できるカスタマイズがありません

  • デバッグが難しい(つまり、Interface Builderで接続を忘れたり、間違った接続をした場合)

絵コンテ

利点:

  • ストーリーボードは、画面が中小規模のアプリに最適であり、ナビゲーションの要件はビュー間で比較的簡単です

  • 多くのコードを記述しなくても、アプリケーションのフローをモックアップできます。

欠点:

  • ストーリーボードはiOS 5以前と互換性がないため、iOS 4.3のサポートは不可能です

  • 全員が同じファイルを変更しているため、チーム環境で並行して作業することは困難です

  • 同じ方針に沿って、競合するストーリーボードをGITにマージするのは苦痛です

  • 人々は、ストーリーボードの使用に関するXcodeのバグを経験しています(たとえば、矛盾のためにDerivedDataフォルダーを頻繁にフラッシュする必要がある)

36
codercat

プロの開発者という私の視点MUST use xibsが、プログラミングに慣れていない愛好家であれば、ストーリーボードを使用すれば助けられるかもしれません。

ストーリーボード

1つの絵コンテで3年間のプロジェクトを行った後、lot of disadvantages

1)非常にごくわずかな思考であっても、構築するのに非常に遅くなります(その中のすべてのビューは再構築する必要があります)。また、ストーリーボードが大きくなると、8または16 GBのRAMを搭載したiMacでも編集するのは非常に困難です。開くのも難しいです。

2)再利用性なし。別のプロジェクトにビューを持つView/ViewControllerをすぐにインポートする方法はありません。他のViewController、Views、Seguesと接続され、それは大きな「触れない」思考のようになります。

3)最小のレイアウト制約を追加または編集する場合でもプロジェクトが大きくなると非常に大きな遅延が発生するため、絶対に触りたくありません。

4)ストーリーボードの自動セル追加によってセルを使用する場合、同じセルビルドを2つのポイントで使用することはできません。

利点:

1)自動セル(ただし、セルは別のビューにそのまま再利用できないため、これも欠点です)

2)セグエなどは、誰かが何が起こっているかを単一の視点で理解することを容易にします。

Xibs:

1)完全にポータブル。

2)Open/Edit/Build SO大きくなるストーリーボードよりもずっと速く

結論:

あなたが趣味の開発者で、自分のビジネス用のアプリを楽しみながら作成する場合、物事を理解しやすくなるため、ストーリーボードを使用する必要があります。ただし、プロの開発者の場合、VC、セルなどにxibsを使用する必要があります。これは、次のプロジェクトのために、または少し変更するか、ストーリーボードを再度作成します。

なぜxibsが私にとってより「再利用可能で移植性が高い」のかという説明:プログラミングのことは、異なるモデル、ファイル、エンティティ、モジュールに保管する必要があります。それは得ることができるように、他のものに少なくとも依存する必要があります

38
Giorgos Ath

XIBとstoryBoardを比較すると、StoryBoardは高速です。

しかし、プロジェクト全体をプログラムで行うと、実際に高速になります。

すべてのstoryBoardをコンパイルすると、ストーリーボードでArchive to fileになります。そして、unArchiveがアプリケーションを実行します。ただし、プログラムでは、クラスは実行時にのみ割り当てられます。

5
Vineesh TP

ストーリーボードは、Appleエンジニアから強く推奨され、すべてのものが中心であり、メモリ管理はコンパイラによって行われることを強く推奨します。しかし、ストーリーボードが推奨され、MVCのビュー部分を理解しやすい

0
m-farhan