以该代码为例。

    let swipe = UISwipeGestureRecognizer(
        target: self, action: #selector(SomeClass.someFunction)

为什么要使用#selector(MyClass.function)?为什么没有选择器包装就只是MyClass.function

最佳答案

#selector只是检查语法的函数的包装。仅当您声明的方法存在于代码中时才进行测试。这样,您将避免在Objective-C选择器字符串中出现错字之类的错误。

您不能像建议的那样传递指向func的指针,因为在底层,选择器除了调用方法外还以其他方式起作用。

我认为它就像在目标上执行选择器一样工作,而不仅仅是调用选择器方法。

您可以避免在#selector中使用类名。传递#selector(yourMethod)#selector(yourMethodWithParam(_:))也是有效的。

关于ios - 创建UIGestureRecognizer时,为什么其操作使用#selector?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38971464/

10-13 05:03