Argument of '#selector' refers to instance method 'gotoPage()' that is not exposed to Objective-C

Add '@objc' to expose this instance method to Objective-C

使用#selector发生错误提示:实例方法gotoPage没有暴露给Objective-C,请添加@objc暴露实例方法给Objective-C

解决办法有两种(显式暴露Swift API):

第一种:根据提示中的描述在方法前添加@objc,如下

@objc func gotoPage() {}

第二种:使用@objcMembers标记整个类或struct,如下

@objcMembers class ViewController: UIViewController {}

如果不需要暴露的方法使用@nonobjc标记

Swift 4之后,NSObject子类不再自动添加@objc ,只有以下这几种情况才会隐式推断为@objc:

第一种:重写@objc的声明

class Super {@objc func foo() { }
}class Sub : Super {/* 推断为 @objc */override func foo() { }
}

第二种:实现@objc协议要求的声明

@objc protocol MyDelegate {func bar()
}class MyClass : MyDelegate {/* 推断为 @objc */func bar() { }
}

第三种:声明中属性银行了@objc,例如@IBAction,@IBOutlet和@NSManaged

swift中的@objc相关推荐

  1. 如何在'纯'Swift中创建弱协议引用(不带@objc)

    本文翻译自:How can I make a weak protocol reference in 'pure' Swift (without @objc) weak references don't ...

  2. Swift中编写单例的正确方式

    本文由CocoaChina译者leon(社区ID)翻译自krakendev 原文:THE RIGHT WAY TO WRITE A SINGLETON 转载请保持所有内容和链接的完整性. 在之前的帖子 ...

  3. 如何在Swift中发出HTTP请求?

    本文翻译自:How to make an HTTP request in Swift? I read The Programming Language Swift by Apple in iBooks ...

  4. [老码团队]Swift中的协议 - 用协议来实现委托模式

    委托是一种设计模式,它允许类或结构体将一些需要它们负责的功能交由(委托)给其他的类型的实例.在这种设计模式中,会涉及到几个角色: 公共接口(Interface):负责封装起需要被委托的功能 代理者(D ...

  5. Swift中的类和结构体(2)

    Swift中的类和结构体(2) 异变方法 方法调度 影响函数派发方式 异变方法 在Swift中,值类型属性不能被自身的实例方法修改,编译器不会通过编译,报错Left side of mutating ...

  6. 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题

    swift中开发选择图片上传,会使用到Tap Gesture Recognizer控件,对应 UITapGestureRecognizer API,以下是代码示例(取自IOS developer li ...

  7. Swift 中使用 SQLite——批量更新(事务处理)

    本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...

  8. Swift 中使用 SQLite——打开数据库

    关于Swift中使用SQLite,接下来可能会分别从打开.增.删.改.查,几个方面来介绍SQLite的具体使用,这一篇重点介绍一下如何打开. 定义全局数据库访问句柄 /// 全局数据库访问句柄 pri ...

  9. 探索 Swift 中的 MVC-N 模式

    作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...

最新文章

  1. 初学python-字符串中引号的使用、input简介、强制类型转换、加减乘除简写、条件判断...
  2. python 0o-377 -0o377_Python : 反射
  3. Python基础06 循环
  4. 浙江省团校计算机考试试题及答案,2001年秋浙江省高校计算机等级考试试卷(二级C)及答案..doc...
  5. 32岁,程序员,年薪60W,果断辞职考进体制内,月薪5K
  6. IE和Windows系统中的彩蛋
  7. Oracle 10g新特性——正则表达式(转)
  8. 关于高速光耦6n137的使用总结_光耦合器应用电路的基本特性!-先进光半导体
  9. wait,notify,notifyAll用法解析
  10. 运筹说 第4期|掌握运筹学软件,走遍天下都不怕
  11. 几款免费开源的企业管理软件
  12. 苹果mp3软件_flac、WAV、m4a等音频格式转成MP3 ,一键搞定!
  13. conda deactivate python3_无法访问conda环境中的activate、deactivate或conda
  14. 【CVPR 2021】Unsupervised Multi-Source Domain Adaptation for Person Re-Identification (UMSDA)
  15. 拥塞窗口cwnd的理解
  16. 英语听力自动断句程序
  17. ROS 2 Dashing Diademata安装和使用文档(含Linux、Windows和OS X)
  18. 知乎上40个有趣回复,很精辟
  19. 移动应用界面设计的尺寸规范
  20. 数据争用(data race) 和竞态条件(race condition)

热门文章

  1. 深度学习100例-生成对抗网络(DCGAN)生成动漫人物 | 第20天
  2. 【Linux】26_文件服务FTP Server
  3. python中strip()的陷阱
  4. 邮件协议(SMTP)性能测试总结(Foxmail邮箱)
  5. selenium打开chrome浏览器代码
  6. ultraedit中换行键的替换
  7. 【聚类算法】sklearn聚类方法详解
  8. 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西
  9. 图片相似度识别_deepface:人脸识别\特征分析
  10. Java蓝牙电话_Android mediaPlayer和蓝牙汽车/耳机电话