代码之家  ›  专栏  ›  技术社区  ›  Steve Harrison iDhaval

为什么某些调用者没有显示在显示相关项目列表(Xcode)中?

  •  0
  • Steve Harrison iDhaval  · 技术社区  · 6 年前

    我正在重构一些现有代码(Objective-C),我想在Xcode(9.2)中找到所有不推荐使用的函数的引用。为此,我单击“显示相关项目”菜单,选择“呼叫者”对于此函数,调用者选项显示为灰色。然而,我可以对这个函数名进行文本搜索,发现它实际上正在被引用。

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

    被调用者函数:

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

    呼叫方:

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

    灰显的呼叫者菜单:

    enter image description here

    附加注释

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

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

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

    enter image description here

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Steve Harrison iDhaval    6 年前

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

    - (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];
    

    警告消失了。调用者现在显示在“显示相关项目”菜单中。 enter image description here

    Apple提供的有关未命名参数的文档: Naming Methods

    在所有参数之前使用关键字。