在 Swift 中使用外部参数名称的方法选择器



在 Swift 中具有外部参数名称的方法的方法选择器名称(签名)是什么?

class Demo: NSObject {
    func sayHello(to person: String, and anotherPerson: String) -> String {
        return "Hello (person) and (anotherPerson)!"
    }
}
let object = Demo()
print(object.respondsToSelector("sayHello:to:and:")) // false

弄清楚这一点的最简单方法是

#import "ProjectName-Swift.h"

在 Objective-C 文件中,编译项目,然后单击在"ProjectName-Swift.h"上。然后你会看到 Swift 方法是映射到 Objective-C 作为

- (NSString * __nonnull)sayHelloTo:(NSString * __nonnull)person and:(NSString * __nonnull)anotherPerson;

从那里你可以得出结论,正确的选择字符串是"sayHelloTo:and:"

print(object.respondsToSelector("sayHelloTo:and:"))

另请注意,选择器必须有两个冒号,每个冒号一个方法参数。

尝试这样调用:

object.respondsToSelector(Selector("sayHello:to:and:"))

希望这有帮助!

最新更新