UDN-企业互联网技术人气社区

板块导航

浏览  : 1528
回复  : 2

[移动平台] selector的赋值问题

[复制链接]
追风少年铁柱的头像 楼主
发表于 2015-7-3 09:28:57 | 显示全部楼层 |阅读模式
在swift中,selector的赋值是用的字符串,所以输入方法名的时候没有代码补全提示。那么问题来了,当我有一个名字非常长,参数非常多的方法,为selector赋值的时候如何避免因手动输入失误(字符输错,漏输参数等)造成的crash呢?
发表于 2015-7-3 10:22:11 | 显示全部楼层
好问题,简言之目前Swift没有很好的办法解决。我能找到的一种workround,是先创建出Selector,然后判断某个NSObject子类对象能否能响应这个Selector,如果是才使用:
let vc = UIViewController()
let actionSel = Selector("viewDidLoad")
if vc.respondsToSelector(actionSel) {
    println("确定在vc上可以调用这个Selector")
}

这里我用到了 Selector,但其实这个类实现了 StringLiteralConvertible 协议,所以直接用字符串也是没问题的。

我个人认为目前Selector这种不依赖于被调用对象的实现是没问题的,所以也就没法在创建Selector时就检测出方法是否valid。我们只能期待Xcode对Swift的Selector语法支持更完善,能提供一些比较智能的自动补全(就像ObjC中写@selector一样)。
使用道具 举报

回复

发表于 2015-7-3 11:07:10 | 显示全部楼层
@lifedim #1877   nice.
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部