2017-01-02 3 views
0

의 @interface 섹션 내에서 내가 가진 :을 피하지 않는 C 콜백 함수 경고 내 클래스 헤더 파일에서

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 (개인) 함수를 선언하는 것입니다. 그러나 함수가 으로 정의되었으므로 하나의 파일에만이 정의되어 있으므로 컴파일러에서는 헤더가 포함 된 각 .M 파일에 대해 사용되지 않는 정적 함수 선언에 대한 경고를 제공합니다.

초기 선언을 실제로 구현 된 .M 파일의 맨 위로 이동해야합니다.