为什么有些来电者没有显示在“显示相关项目”列表中 (Xcode)?

Why are some Callers not displaying in the Show Related Items list (Xcode)?

我正在重构一些现有代码 (Objective-C),我想在 Xcode (9.2) 中找到已弃用函数的所有引用。为此,我单击 "Show Related Items" 菜单,选择 "Callers." 对于此功能,呼叫者选项显示为灰色。但是,我可以对该函数名称进行文本搜索,发现它实际上被引用了。

什么会导致函数的实现从调用者列表中隐藏?

被调用函数:

- (NSString *) createWifiUser: (NSString *) inuser:(NSString *)inpassword:(NSString *)inaccountid

{
    //returns xml
}

来电者:

self.wsret= [[fpws createWifiUser:wifiname.text :wifipass.text :sharedManager.accountId ] mutableCopy];

来电者菜单变灰:

补充说明

我想知道这是否与 IDE 显示的有关函数参数语法的警告有关:

'inuser'用作前一个参数的名称而不是选择器的一部分

'inpassword'用作前一个参数的名称而不是选择器的一部分

谢谢!

看起来这个问题实际上是由未命名参数引起的。我重构了函数以使用命名参数:

- (NSString *)createWifiUser:(NSString *)inuser inpassword:(NSString *)inpassword inaccountid:(NSString *)inaccountid
{
    //return xml
}

我还重构了调用方以使用命名参数:

self.wsret= [[fpws createWifiUser:wifiname.text inpassword:wifipass.text inaccountid:sharedManager.accountId ] mutableCopy];

警告消失了。来电者现在显示在“显示相关项目”菜单中。

Apple 关于未命名参数的文档: Naming Methods

Use keywords before all arguments.