禁止面向用户的文本应使用本地化的字符串宏警告

Par*_*fna 18 cocoa objective-c xcode8

我正在使用未本地化的字符串并低于警告

面向用户的文本应使用本地化的字符串宏

如何抑制此警告?

Par*_*fna 21

来自clang文档:

您可以使用仅返回其输入但注释为返回本地化字符串的函数来抑制分析器警告(并记录您的意图):

__attribute__((annotate("returns_localized_nsstring")))
static inline NSString *LocalizationNotNeeded(NSString *s) {
  return s;
}

[field setStringValue:LocalizationNotNeeded(@"Debug")];
Run Code Online (Sandbox Code Playgroud)

某些项目也可能发现使用NSLocalizedString但在字符串内容中添加"DNL"或"Do Not Localize"很有用


Hog*_*mac 13

在项目构建设置:"静态分析器 - 问题 - Apple API"将"缺少可定位性"设置为否

还要确保没有任何本地化,否则xcode 9将警告您再次打开"Missing Localizability"分析器警告.

这对我来说比较棘手,我不得不用文本编辑器打开项目文件(project.pbxproj)并手动清空"knownRegions"列表,否则它们不会被删除

  • 这应该被标记为正确答案 (2认同)