为什么选择器不需要将参数传递给采用参数的方法?

问题描述 投票:0回答:1

我正在研究一个项目,试图掌握代码。我刚遇到#selector。据我了解,selectors调用方法(当然,我敢肯定还有更多)。

令我震惊的一件事是,即使selector本身带有argumentmethod调用也不会将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 xcode arguments parameter-passing selector
1个回答
0
投票

选择器实际上是对象或结构上方法的名称,它们用于在运行时执行某些代码。它们在Objective-C中很常见,但是Swift的最早版本并未包含一些核心选择器功能,因此使用了一段时间。

Objective-C的选择器语法非常简单-它仅使用@selector(methodName:arguments :)。斯威夫特的有点复杂。Swift具有函数重载(相同的名称,不同的参数),而Objective-C没有

我认为正确的使用方法如下,

button.addTarget(self, action: #selector(ClassName.methodName(_:)), 
forControlEvents: UIControlEvents.TouchUpInside)

请看一下这两个链接,其详细解释。

Proper way to use selectors in Swift

© www.soinside.com 2019 - 2024. All rights reserved.