2017-01-02 5 views
0

で使用されていないCコールバック関数の警告を避け、@interfaceセクション内で、私が持っている:は私のクラスのヘッダーファイルでのCocoaクラス

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

を次に私のクラスの.mファイルで、私は、コールバック

としてこれを設定します
if (SCNetworkReachabilitySetCallback([self reachability], ReachabilityCallback, &context)) 
    SCNetworkReachabilityScheduleWithRunLoop([self reachability], CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); 

、コールバック自体も(@implementation以内).Mで定義されている

static void ReachabilityCallback (SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) 
{ 
    BOOL isReachable = ((flags & kSCNetworkFlagsReachable) != 0); 
    BOOL connectionRequired = ((flags & kSCNetworkFlagsConnectionRequired) != 0); 
    BOOL networkAvailable = (isReachable && !connectionRequired) ? YES : NO; 

    // Post a notification to notify the client that the network reachability changed. 
    NSDictionary* userInfo = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:networkAvailable], kReachabilityKey, nil]; 
    [[NSNotificationCenter defaultCenter] postNotificationName:kReachabilityChangedNotification object:nil userInfo:userInfo]; 
} 

私は未使用のFを取得しています静的なC関数の私の.hファイル内のunction警告。どのように私はこの機能を呼び出すのではなく、呼び出すためにOSに提供するので、これを避けることができますか?

+0

私はあなたのタグをCからObjective-Cに変更しました。おそらくそのリストからより良い回答が得られます。 –

+0

ありがとうございます。あなたの答えは十分だった...問題解決。 – Trygve

答えて

2

staticキーワードは、その機能が特定の翻訳単位(つまり、.Mファイル)に対してローカルでプライベートであることを示しているため、エクスポートされずにほかの.Mファイルで使用できるようになります。したがって、ではなく、を.Hファイルに宣言する必要があります。

私の推測ではある何が起こっている、.Hファイルを含む任意の他の.mファイルで、宣言はReachabilityCallbackという名前のローカルstatic(プライベート)関数を宣言するということです。ただし、関数はであるため、ファイルが1つのみでと定義されているため、ヘッダーが含まれている余分な.Mファイルごとに、使用されていない静的関数宣言が表示されます。

最初の宣言を実際に実装されている.Mファイルの先頭に移動するだけです。

関連する問題