我打开了一些旧的iOS代码,当我尝试构建它时,我得到一个"未使用的参数"错误代码如下:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
NSLog(@"Search Bar isn't used in this function");
}
Run Code Online (Sandbox Code Playgroud)
这是我第一次看到Objective-C编译器为此吐出错误(而不是警告).由于很多iOS调用不一定使用传递参数(例子是很多回调),我需要帮助来摆脱这个.
我正在使用NSLocalizedString一个特定的消息,如果第二个参数作为一个变量传递,它可以正常工作,但如果第二个参数的写入与设置的变量完全相同Use of undeclared identifier 'NSLocalizedString',Too many arguments provided to function-like macro invocation则会失败.我有使用变量的工作代码,这很好,我只是想了解在其他情况下无法知道如何避免它的原因.
使用以下声明:
NSString *branchTitle = [branchDictionary objectForKey:@"Title"];
NSString *localString = [NSMutableString stringWithFormat:@"%@ node title", branchTitle];
Run Code Online (Sandbox Code Playgroud)
这没关系,工作正常:
[navItem setTitle:NSLocalizedString(branchTitle, localString)];
Run Code Online (Sandbox Code Playgroud)
...但是,这似乎与我相同,但由于上述错误而失败:
[navItem setTitle:NSLocalizedString(branchTitle, [NSMutableString stringWithFormat:@"%@ node title", branchTitle])];
Run Code Online (Sandbox Code Playgroud)
在这里和其他地方搜索我没有找到解释.我阅读了每个错误消息和各种NSLocalizedString问题的一些点击,但没有任何将它们联系在一起的内容.我发现的第二条错误消息暗示可能是clang的问题和语句中的逗号数量,表明即使额外的逗号在NSMutableString消息中,它仍被视为额外的参数NSLocalizedString.这有任何意义吗?
这个问题并不重要,但该声明旨在根据从字典中提取的英文版本设置导航栏标题的本地化版本,该字典因不同视图而异.该NSMutableString部分根据英文标题定义了本地化的注释.
编辑:根据下面接受的答案解决此问题后,我注意到另一个相关问题.该声明localString正在产生"Unused variable"编译器警告,但显然正在使用它.这也是因为它在C-macro中并且为了完整性,我在这里添加一个关于抑制该警告的相关帖子的链接:如何在Xcode中摆脱"未使用的变量"警告
如何仅在一个地方禁用一个警告?
我有一个我暂时不使用的变量.Xcode向我显示有关"未使用的变量"的警告.我想禁用警告,但仅对此变量,不是所有此类型的警告.
是否可以不设置/获取此变量的值?