Xcode/RestKitにタブベースのアプリケーションを作成し、RKReachabilityObserverを使用してデバイスのインターネット接続を判断しようとしています。RestKitでRKReachabilityObserverを実装する最善の方法
理想的には、アプリケーション全体で到達可能な変数を1つ(これが可能であれば)にしたいと思っていますが、私の実装は以下のコード通りで、4つのタブに複製するとうまく機能しません。
誰かがこれを行うためのより良い方法の提案があれば、本当にありがとうと思います。
View.h
@property (nonatomic, retain) RKReachabilityObserver *observer;
View.mその後、
@interface AppViewController()
{
RKReachabilityObserver *_observer;
}
@property (nonatomic) BOOL networkIsAvailable;
@synthesize observer = _observer;
-(id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
self.observer = [[RKReachabilityObserver alloc] initWithHost:@"mydomain"];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:RKReachabilityDidChangeNotification
object:_observer];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// determine network availability
if (! [_observer isReachabilityDetermined]) {
_networkIsAvailable = YES;
}
else
{
_networkIsAvailable = NO;
}
_text.returnKeyType = UIReturnKeyDone;
_text.delegate = self;
}
- (void)reachabilityChanged:(NSNotification *)notification {
RKReachabilityObserver* observer = (RKReachabilityObserver *) [notification object];
if ([observer isNetworkReachable]) {
if ([observer isConnectionRequired]) {
_networkIsAvailable = YES;
NSLog(@"Reachable");
return;
}
}
else
{
_networkIsAvailable = NO;
NSLog(@"Not reachable");
}
}
どこでも私の見解では、私は単純にやる....
if (_networkIsAvailable == YES)
{...
私が持っています複数のビューでこれを実装しました(これは問題を引き起こしている。
マルチビューアプリケーションの推奨アプローチは何ですか?
代わりにシングルトンを使いました。ありがとう。 – Nick
こんにちは。選択したホストにsharedClientシングルトンでアクセスする方法はありますか?また、最初のロードまでの時間は約2秒です。これは正常ですか? – Nick
リーチャビリティAPIに関してiOS5にいくつかの問題がありました。 BaseURLをIPアドレス(可能であれば)として定義し、RestKitがIPを使用してステータスを判断するのが最善です。問題は、到達可能性ステータスを判断する際にiOSがDNSリクエストを処理する方法に関連しています。はい、いくらか遅れることがあります。デバイスやシミュレータでテストしていますか?デバイスの場合、iOSとは何か(また、Edge/3G/WiFi接続も) – mja