提问人:Trygve 提问时间:1/3/2017 最后编辑:Chris VigTrygve 更新时间:1/3/2017 访问量:212
避免 Cocoa 类中未使用的 C 回调函数警告
Avoid unused C callback function warning in Cocoa class
问:
在我的类头文件中,在@interface部分中,我有:
static void ReachabilityCallback (SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info);
然后在我的类 .m 文件中,我将其设置为回调
if (SCNetworkReachabilitySetCallback([self reachability], ReachabilityCallback, &context))
SCNetworkReachabilityScheduleWithRunLoop([self reachability], CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
并且回调本身也在 .m 中定义(在 @implementation 内)
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];
}
我在静态 C 函数的 .h 文件中收到未使用的函数警告。我怎样才能避免这种情况,因为该函数不是由我调用的,而是提供给操作系统供其调用的?
答:
2赞
Chris Vig
1/3/2017
#1
该关键字表示该函数是本地函数,并且是特定翻译单元(即 .M 文件),因此它不会被导出并提供给其他 .M 文件。因此,您不应在 .H 文件。static
我的猜测是,正在发生的事情是,在任何其他.M 文件,其中包含 .H 文件,则声明声明了一个名为 的本地(私有)函数。但是,由于该函数仅在一个文件中定义,因此编译器(正确地)会针对每个额外的 .包含标头的 M 文件。static
ReachabilityCallback
您只需将初始声明移动到 .M 文件。
评论