为了账号安全,请及时绑定邮箱和手机立即绑定

swift里面没有performSelector,有替代的函数吗

swift里面没有performSelector,有替代的函数吗

慕尼黑的夜晚无繁华 2019-03-20 13:13:47
swift里面没有performSelector,有替代的函数吗
查看完整描述

2 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

使用可选链调用。例如试图调用代理中一个叫 abc 的没参数的方法:
delegate?abc?()
就等于判断了 delegate 是否为 nil,而 delegate 不为 nil 的时候又执行了 performSelector 判断 abc 是否存在了。
如果 delegate == nil 或者 abc 不存在,都不会干任何事情,不会异常出错。
而如果 delegate 不为空,abc 方法存在,则会正常调用 delegate 里的 abc 方法。

查看完整回答
反对 回复 2019-03-22
?
波斯汪

TA贡献1811条经验 获得超4个赞

Swift由于并非基于消息机制,所以本身没有selector这个十分灵活的机制,但是可以使用Cocoa Framework中所留下的一些selector,比如:

<pre class="brush:objc; toolbar: true; auto-links: false;">

import UIKit
class MyViewController: UIViewController {
let myButton = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
super.init(nibName: nibName, bundle: nibBundle) myButton.targetForAction("tappedButton:", withSender: self)
}
func tappedButton(sender: UIButton!) { println("tapped button")
} }

</pre>

上述代码,"tappedButton:"就是一个selector,呵呵。

查看完整回答
反对 回复 2019-03-22
  • 2 回答
  • 0 关注
  • 1528 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信