2012-01-02 6 views
1

私はアプリケーションでURL接続を行うためにAsiHttpRequestライブラリを使用しています。しかし、私はいくつかのエラーを報告しているiOS5をしてReachability.mファイルへのアップグレード(4)次の関数について:iOS5のasiHttpRequest

static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) { 

    #pragma unused (target, flags) 
    NSCAssert(info, @"info was NULL in ReachabilityCallback"); 
    NSCAssert([(NSObject*) info isKindOfClass: [Reachability class]], @"info was the wrong class in ReachabilityCallback"); 


    // Post a notification to notify the client that the network reachability changed. 
    [[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification object: (Reachability *) info]; 


} // ReachabilityCallback() 


- (BOOL) startNotifier { 

    SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; 

    if(SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context)) { 

     if(SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)) { 

      return YES; 

     } 

    } 

    return NO; 

} // startNotifier 

1SRエラー:NSCAssertラインでは、「Cポインタ型のキャスト 『無効』 Objective-CのポインタへタイプNSObjectはブリッジキャストが必要です "。なぜ起こり、どのように解決するのですか?

回答:ファイルごとにARCを無効にすることができます。プロジェクトの設定をビルドし、すべてのASIHTTPRequestファイルで-fno-objc-arcフラグを設定します(テキストを編集するにはダブルクリックします)。次に、ASIAuthenticationDialogとそれでもエラーを生成している参照をすべて削除する必要があります。わたしにはできる。

+0

私の答えは、同様の問題を持つ人々を助けるために焦点を当てています。あなたが-1に投票した場合、少なくとも理由を説明してください。ありがとう – Jaume

答えて

2

編集:今覚えています。問題はARCです。ただし、ビルドフェーズ>>コンパイルソース:-fno-objc-arcに次のコンパイラフラグを設定することにより、ファイルをARCでコンパイルしないようにすることができます。すべてのASIHTTPRequestファイルを選択してダブルクリックすると、それらのすべてのフラグを1つに設定できます。

オリジナルのポスト:私は今、数週間のカップルのためASIHTTPRequestを使用してきたと私は到達可能性と問題についてどこかの記事を読んで覚えて

、私はちょうどそれが正確に何だったか覚えていないことができます。

とにかく、これは私のReachability.mにおけるそれらのラインがどのように見えるかです:

//Start listening for reachability notifications on the current run loop 
static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) { 

#pragma unused (target, flags) 
NSCAssert(info, @"info was NULL in ReachabilityCallback"); 
NSCAssert([(NSObject*) info isKindOfClass: [Reachability class]], @"info was the wrong class in ReachabilityCallback"); 

//We're on the main RunLoop, so an NSAutoreleasePool is not necessary, but is added defensively 
// in case someone uses the Reachablity object in a different thread. 
NSAutoreleasePool* pool = [NSAutoreleasePool new]; 

// Post a notification to notify the client that the network reachability changed. 
[[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification 
                object: (Reachability *) info]; 

[pool release]; 

} // ReachabilityCallback() 


- (BOOL) startNotifier { 

    SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; 

    if(SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context)) { 

     if(SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)) { 

      return YES; 

     } 

    } 

    return NO; 

} // startNotifier 
+0

私が使用しているのと同じコードですが、iOS5では動作しません。 ARCのために問題が発生しました。 – Jaume