Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了@selector()在Swift?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述@H_607_4@ 我试图在Swift中创建一个NSTimer,但我有一些麻烦。 NSTimer(timeInterval: 1, target: self, SELEctor: test(), userInfo: nil, repeats: truE) test()是同一个类中的一个函数。 我在编辑器中出现错误: Could not find an overload for ‘init’ that accepts
我试图在Swift中创建一个NSTimer,但我有一些麻烦。
NSTimer(timeInterval: 1,target: self,SELEctor: test(),userInfo: nil,repeats: truE)

test()是同一个类中的一个函数

我在编辑器中出现错误

当我改变选择器:test()到s​​elector:nil的错误消失。

我试过了

> SELEctor:test()
> SELEctor:测试
> SELEctor:选择器(test())

但没有什么工作,我找不到解决方案的参

Swift本身不使用选择器 – 在Objective-C中使用选择器的几种设计模式在Swift中工作方式不同。 (例如,对协议类型使用可选链接,或者使用/作为测试,而不是respondToSELEctor :,并在任何地方使用closures,而不是performSELEctor:以获得更好的类型/内存安全性)。

但仍有一些重要的基于ObjC的API使用选择器,包括定时器和目标/操作模式。 Swift提供了使用这些的选择器类型。 (Swift自动使用它代替ObjC的SEL类型。)

在Swift 2.2(Xcode 7.3)和更高版本(包括Swift 3 / Xcode 8)中:

您可以使用#SELEctor表达式从Swift函数类型构造一个SELEctor。

let timer = Timer(timeInterval: 1,target: object,SELEctor: #SELEctor(MyClass.test),repeats: falsE)
button.addTarget(object,action: #SELEctor(MyClass.buttonTapped),for: .touchUpInsidE)
view.perform(#SELEctor(UIView.insertSubview(_:aboveSubview:)),with: button,with: otherButton)

这个方法的伟大的事情?函数引用由Swift编译器检查,因此您可以将#SELEctor表达式仅与实际存在且有资格用作选择器的类/方法对组合使用(请参阅下面的“选择器可用性”)。您还可以根据需要,根据the Swift 2.2+ rules for function-type naming自由地使您的功能

(这实际上是对ObjC的@SELEctor()指令的改进,因为编译器的-Wundeclared-SELEctor检查只验证命名的选择器存在。你传递给#SELEctor的Swift函数引用检查存在,类中的成员资格和类型签名。)

对于传递给#SELEctor表达式的函数引用,还有一些额外的警告:

>使用前面提到的syntax for function references(例如insertSubview(_:at

大佬总结

以上是大佬教程为你收集整理的@selector()在Swift?全部内容,希望文章能够帮你解决@selector()在Swift?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:selectorswift