gpt4 book ai didi

ios - NSAssert 中使用的变量的未使用变量警告

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:46 24 4
gpt4 key购买 nike

我有一段代码,其中包含一些仅在 NSAssert 语句中使用的变量。他们检查调试构建更严格执行的方法参数的某些先决条件。这是一个例子:

NSString *videoCodec = [outputSettings objectForKey:AVVideoCodecKey];
NSNumber *width = [outputSettings objectForKey:AVVideoWidthKey];
NSNumber *height = [outputSettings objectForKey:AVVideoHeightKey];

NSAssert(videoCodec && width && height, @"OutputSettings is missing required parameters.");

NSAssert 在构建过程中被编译出来,导致编译器发出“未使用的变量”警告。请注意,此警告仅在我执行发布构建时出现。

我知道这种用法是有效且安全的,但我怎样才能让编译器知道它不会生成错误消息?

最佳答案

找到了解决方案,看到这个库的开发版已经有了同样的解决方案,进一步确认。

可以使用“未使用”属性逐个变量地消除编译器警告。 “cdefs.h”包含在 iOS 中,应该包含在 OS-X 中,包括指出的便利定义 here :#define __unused __attribute__((__unused__))

生成的代码如下所示:

__unused NSString *videoCodec = [outputSettings objectForKey:AVVideoCodecKey];
__unused NSNumber *width = [outputSettings objectForKey:AVVideoWidthKey];
__unused NSNumber *height = [outputSettings objectForKey:AVVideoHeightKey];

NSAssert(videoCodec && width && height, @"OutputSettings is missing required parameters.");

或者,如果可以在不使用中间变量的情况下重写 NSAssert 语句,并且不会失去清晰度,那也是一个可以接受的解决方案。

关于ios - NSAssert 中使用的变量的未使用变量警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34847216/

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