gpt4 book ai didi

objective-c - 避免 Cocoa 类中未使用的 C 回调函数警告

转载 作者:行者123 更新时间:2023-12-03 17:37:56 25 4
gpt4 key购买 nike

在我的类头文件中,@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];
}

我在 .h 文件中收到有关静态 C 函数的未使用函数警告。由于该函数不是由我调用,而是提供给操作系统供其调用,因此如何避免这种情况?

最佳答案

static 关键字表示该函数是本地的,并且是特定翻译单元(即 .M 文件)私有(private)的,因此不会将其导出并可供其他 .M 文件使用。因此,您不应该在 .H 文件中声明它。

我的猜测是,在包含 .H 文件的任何其他 .M 文件中,声明是声明一个名为的本地静态(私有(private))函数ReachabilityCallback。但是,由于该函数仅在一个文件中定义,因此编译器(正确地)会向您发出警告,告知包含 header 的每个额外 .M 文件有未使用的静态函数声明。

您应该将初始声明移至实际实现的 .M 文件的顶部。

关于objective-c - 避免 Cocoa 类中未使用的 C 回调函数警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41430177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com