2011-12-30 9 views
-1

現在のリリースでは、iOS 4.xをサポートするXCode 4.2で初めてのアプリケーションをコーディングしています。 iOS 4.0をサポートするために、私はストーリーボード機能を使用していません。また、弱い参照にはunsafe_unretainedを使用しています。私はAppDelegateファイル(.hと.m)といくつかのビューコントローラをUITabBarControllerで持っています。私の最初のビューコントローラーでは、-viewDidLoadメソッドでは、私は2つのNSDictionariesを初期化し、また1秒間隔でタイマーを開始します。セレクタメソッドでは、両方の辞書で対応する値を選択するために、0から7までの乱数を取得する必要があります。ディクショナリは最初のビューコントローラでのみ使用され、どこにも使用されません。 AppDelegate -didFinishLaunchingWithOptions:メソッドまたは最初のView Controllerの-viewDidLoad方法で -共有iPhone/iPadアプリのデータとロジックの最適な場所

私の最初の質問は、私は、これらの2つの辞書をロードしない

  1. のですか?
  2. また、iPadをサポートしたいと考えていました。その場合、iPhone/iPod/iPadをサポートする共通のクラスライブラリを作成しますか?それが推奨される方法であれば、代わりにAppDelegate .mファイルに共通の機能を移行できますか?

助言してください。

答えて

0

共通のデータおよびビジネスロジックを、UIレイヤーとAppdelegate以外の別のモデルクラスセットに移動できます。これは、MVCパターンの主なメリットの1つです。明確な区別を付けることによって、個別のビューレイヤー(電話用とiPad用)を簡単に作成できます。

つまり、すべてのデータ(辞書)、乱数とタイマーを持つロジックがカプセル化されて共有されることを意味します。これにより、大多数のモデルとロジックをプログラムできれいにユニットテストすることもできます。また、アルゴリズムの大幅な変更やコードの変更を最小限に抑えることができます。

タイマーがオフになると、通知を送信するか、コールバックを行うデリゲートパターンを設定することができます。

関連のポスト:あなたが共有モデルを行う場合Delegates vs. events in Cocoa Touch

、1つのオプションのように、あなたがモデルにアクセスシングルトンパターンを使用することです:

[MyModel sharedInstance]; 
+1

優れています。モデルクラスの作成方法の簡単な例を教えてください。 「レイヤーの表示」を意味するときは、iPhoneとiPadのビュー(.xib、.h、.m)を別々にすることを意味しますか? –

+0

モデルクラスは、.hと.mを持つobjective-cクラスです。シングルトンについては、objective-cシングルトンを探します。 – bryanmac

+0

も読んでください:http://stackoverflow.com/questions/2411507/singleton-where-to-create-instance – bryanmac

0

次の場合は一緒にあなたのコードとデータを維持する必要がありますこれは、ビューコントローラの辞書にしかアクセスしない場合は、ビューコントローラのviewDidLoadで初期化する必要があることを意味します。

可能であれば、アプリのデリゲートから物事を守ることをお勧めします。そうしないと、責任を負うべきではない奇妙なモンスタークラスになります。必要に応じて、共通データを管理する1つ以上のクラスを作成します(たとえば、シングルトンパターンを使用して)。

iPhoneとiPadの両方で共通のファイルを使用できるかどうかは、さまざまな要因によって異なります。主な要因は、UIがどのように異なっているかです。それらが非常に似ている場合は、両方に1つのクラスを使用します。必要な違いを実現するiPhoneとiPad用の共通の機能とサブクラスを持つ基本クラスを作成することもできます。

+0

すべての返信をありがとう。以前の紳士が投稿したリンクをすばやく読みましたが、それは私にとって混乱しています。サンプルの初期化コードを使った簡単なシングルトンの例とそれを使用する方法は初心者にとって非常に役立ちます。 –

関連する問題