关于 pragma使用

拉斯厄尔高福 2020-08-03

如果你知道你的代码不会导致内存泄露,你可以通过加入这些代码忽略这些警告

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
 
[myObj performSelector:mySelector withObject:name];

#pragma clang diagnostic pop

注意我们是如何在相关代码上下文中用 pragma 停用 -Warc-performSelector-leaks 检查的。这确保我们没有全局禁用。如果全局禁用,可能会导致错误。

全部的选项可以在 The Clang User‘s Manual 找到并且学习。

忽略没用使用变量的编译警告

这对表明你一个定义但是没有使用的变量很有用。大多数情况下,你希望移除这些引用来(稍微地)提高性能,但是有时候你希望保留它们。为什么?或许它们以后有用,或者有些特性只是暂时移除。无论如何,一个消除这些警告的好方法是用相关语句进行注解,使用 #pragma unused():

- (void)giveMeFive
{
    NSString *foo;
    #pragma unused (foo)
 
    return 5;
}

现在你的代码不用任何编译警告了。注意你的 pragma 需要标记到未定义的变量之下。

摘录来自: 极客学院. “Programming with Objective-C。” Apple Books.

相关推荐

fengjing81 / 0评论 2020-01-06