相关疑难解决方法(0)

代码问题:格式字符串不是字符串文字

可能重复:
SnowLeopard Xcode警告:"格式不是字符串文字,没有格式参数"

我为这行代码得到了以下问题.

"格式字符串不是字符串文字(可能不安全)"

NSLog([NSString stringWithFormat:@"%@", entered]);
Run Code Online (Sandbox Code Playgroud)

有什么建议?

iphone objective-c

53
推荐指数
2
解决办法
5万
查看次数

从C++调用NSLog:"格式字符串不是字符串文字(可能不安全)"

当我从C++调用NSLog时,Xcode抱怨传递给NSLog的格式字符串不是文字字符串.这是触发警告的一行代码:

NSLog(CFSTR("Leaking?"));
Run Code Online (Sandbox Code Playgroud)

我不知道的任何方式代码C++文字的NSString,我没有看到相关的警告,我可以在项目设置中关闭.有没有办法从C++调用NSLog而不触发此消息?我正在使用Xcode 4.2.1.

编辑:这真的是C++代码.我通常避免使用Objective-C++,坚持使用Objective-C或普通的旧C++,因为没有官方文档说明Objective-C++中哪些有用,哪些没有.我只发现模糊的警告(例如)STL的某些部分可能存在问题.我使用模板,STL和C++的其他"高级"功能,所以我想安全地玩它.

编辑#2,解决方案:我只是想通了clang支持的警告标志比实际记录的要多得多.(从Xcode提供给我的长长的警告列表中可以看出这一点.)我尝试了-Wno-format-nonliteral a la gcc,现在Xcode很高兴.

c++ objective-c nslog

5
推荐指数
1
解决办法
1万
查看次数

Objective-C:"格式字符串不是字符串文字(可能不安全)"用宏警告

我正在使用宏来简化返回本地化字符串,如下所示:

#define GetLocalStr(key, ...) \
    [NSString stringWithFormat:[[NSBundle mainBundle] localizedStringForKey:key value:@"" table:nil], ##__VA_ARGS__]
Run Code Online (Sandbox Code Playgroud)

基本上,如果您在本地化字符串文件中有一个条目,如"name" = "My name is %@";调用

GetLocalStr( @"name", @"Foo" );
Run Code Online (Sandbox Code Playgroud)

将返回NSString @"My name is Foo"

然而,当我运行它时,如:

NSString * str = GetLocalStr( @"name", @"Foo" );
Run Code Online (Sandbox Code Playgroud)

我得到"格式字符串不是字符串文字"警告.即使遵循关于此警告的其他答案的建议并将其替换为:

NSString * str = [NSString stringWithFormat:@"%@", GetLocalStr( @"name", @"Foo" )];
Run Code Online (Sandbox Code Playgroud)

我仍然得到警告,此外,它有点打破宏观使生活更容易的点.

如何摆脱GetLocalStr#pragma suppressors中包含所有调用的警告?

编辑27/08

在通过CRD的答案并进行更多测试之后,似乎我对错误做了一个错误的假设.澄清:

本地化字符串文件:

"TestNoArgs" = "Hello world";
"TestArgs" = "Hello world %@";
Run Code Online (Sandbox Code Playgroud)

码:

NSString * str1 = GetLocalStr( @"TestNoArgs" ); // gives warning
NSString * str2 …
Run Code Online (Sandbox Code Playgroud)

string macros objective-c ios

5
推荐指数
2
解决办法
8992
查看次数

Format String不是文字字符串(可能不安全)警告

可能重复:
警告:"格式不是字符串文字,没有格式参数"

我有一个开发人员在我的应用程序中的以下代码行.我正在学习Objective C的基础知识,当我更新App兼容iPhone 5时,我看到以下警告(我没有更改他的代码)Format String不是文字字符串(可能不安全).代码如下;

self.progressHud.labelText = [NSString stringWithFormat:message];   
Run Code Online (Sandbox Code Playgroud)

我不确切地知道这意味着什么,也不想上传任何可能是安全问题或被Apple拒绝的内容.大家都非常感谢您的帮助.

xcode objective-c ios

4
推荐指数
1
解决办法
5957
查看次数

警告:格式字符串不是字符串文字

我从以下行获得"格式字符串不是字符串文字"警告

NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:valist];
Run Code Online (Sandbox Code Playgroud)

我在以下功能中使用它

- (void)logMessage:(NSString *)format
         level:(LoggingLevel)level
withParameters:(va_list)valist {
         if (level >= self.loggingLevel) {
              NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:valist];        
         } 
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?我正在使用Xcode 4.6.3

objective-c clang ios

4
推荐指数
2
解决办法
2879
查看次数

"格式字符串不是字符串文字(可能不安全)"

我正在使用Xcode 4.6.我的应用程序正在使用设备和模拟器,但在构建时我收到警告:

"格式字符串不是字符串文字(可能不安全)"

从这段代码

[sArray addObject:[NSString stringWithFormat:subCatName]];

l.text= [spacing stringByAppendingFormat:[mArray objectAtIndex:section]];
Run Code Online (Sandbox Code Playgroud)

为什么,我该如何解决?

cocoa objective-c compiler-warnings nsstring stringwithformat

1
推荐指数
1
解决办法
2119
查看次数