我正在研究一个项目,试图掌握代码。我刚遇到#selector
。据我了解,selectors
调用方法(当然,我敢肯定还有更多)。
令我震惊的一件事是,即使selector
本身带有argument
,method
调用也不会将method
传递给parameter
。该代码工作正常,因此我认为这是selector
的正常行为。这是代码示例:
[Communication sendVerifyNumber:ps.address verificationCode:@""
withCallbackMethod:@selector(numberVerificationCallCompleted:)
callbackFailMethod:@selector(numberVerificationCallFailed:) onObject:self];
}
和numberVerificationCallCompleted
:
-(void)numberVerificationCallCompleted:(NSNumber*)responseNumber{...}
所以,我的问题是,这与selectors
有关吗?我的意思是,为什么要使用它们?以及它如何运作? method
仍然需要argument
才能正常工作,因此它必须来自某个地方,对吧?
选择器实际上是对象或结构上方法的名称,它们用于在运行时执行某些代码。它们在Objective-C中很常见,但是Swift的最早版本并未包含一些核心选择器功能,因此使用了一段时间。
Objective-C的选择器语法非常简单-它仅使用@selector(methodName:arguments :)。斯威夫特的有点复杂。Swift具有函数重载(相同的名称,不同的参数),而Objective-C没有
我认为正确的使用方法如下,
button.addTarget(self, action: #selector(ClassName.methodName(_:)), forControlEvents: UIControlEvents.TouchUpInside)
请看一下这两个链接,其详细解释。