2

iOSアプリのデザインを開発するためのベストプラクティスについてアドバイスが必要です

私が扱っているのは次のとおりです。iOSデバイスがインターネット接続を失ったとき(またはインターネット接続がないためにそれを理解したとき)、アプリをある種のオフラインモードにします。つまり、イベントを発生させ、NSNotificationsを送信し、mbを表示します。ある種のアラートなど。したがって、iOSデバイスが接続を取り戻したら、反対のことをしたいのです。アプリをある種のオンラインモードに移動します。

ですから、私が欲しいのは、いくつかのViewController内からアプリのモードにアクセスする機能(つまり、アプリがオンラインかオフラインかを確認する機能)を持つことです。アプリの状態を保存する2つの方法を考えています。

1)AppDelegateのプロパティをいくつか持っており、AppDelegateを介してどこからでもアクセスできます。AppDelegateはアプリケーションのグローバルオブジェクトとしてではなく、起動の初期化を実行し、アプリケーションの状態変更を制御するために使用されることを想定しているため、これは間違ったアプローチです。

2)この情報をモデルレベルで保存します。しかし、そのような目的でモデルレベルで何を使用するのかわかりません。Core DataまたはNSUserDefaultsを使用することは良い考えではないと思います。このプロパティを永続的にしたくないので、現在のアプリケーションの実行中にのみ必要です。そして、Core DataとNSUserDefaultsを除いて、私は実際には他のモデルレベルのテクニックを知りません。

ほとんどが理論上の質問であるため、コード例は含めません。

4

3 に答える 3

6

シングルトンパターンを使用して、変数をプロパティとして格納できます

例えば

@interface GlobalData : NSObject

@property BOOL connectionAvailable;

+ (GlobalData *)sharedInstance;

@end

@implementation

+ (GlobalData *)sharedInstance {
    static GlobalData *sharedInstance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[GlobalData alloc] init];
    });
    return sharedInstance;
}

@end

// --- in some method
[GlobalData sharedInstance].connectionAvailable = /* connection state */;

// --- in some other method
BOOL connectionAvailable = [GlobalData sharedInstance].connectionAvailable;
于 2013-02-27T09:00:08.280 に答える
1

2番目のアプローチが最適です。あなたは確かにインターネット接続を示すプロパティの永続性を必要としません。モデルをシングルトンクラスにすることをお勧めします。これBOOLにより、インターネット接続の読み取り専用プロパティが公開され、ViewControllerはキー値の監視を介してその変更をサブスクライブできます。モデルはReachability、インターネット接続ステータスを更新するためのクラスを内部的に実装することもできます。

于 2013-02-27T08:59:55.380 に答える
1

AppleのReachabilityクラスを使用していると想定しています。http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

Reachabilityクラスにカテゴリを作成して、インターネット接続の状態を確認できるsharedInstanceシングルトンを追加しました。私はすべてのアプリでこれを使用しています。

シングルトンの実行方法は次のとおりです。

ARCと互換性のあるObjective-Cシングルトンを実装するにはどうすればよいですか?

于 2013-02-27T09:07:26.210 に答える