swift中的@objc
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相关推荐
- 如何在'纯'Swift中创建弱协议引用(不带@objc)
本文翻译自:How can I make a weak protocol reference in 'pure' Swift (without @objc) weak references don't ...
- Swift中编写单例的正确方式
本文由CocoaChina译者leon(社区ID)翻译自krakendev 原文:THE RIGHT WAY TO WRITE A SINGLETON 转载请保持所有内容和链接的完整性. 在之前的帖子 ...
- 如何在Swift中发出HTTP请求?
本文翻译自:How to make an HTTP request in Swift? I read The Programming Language Swift by Apple in iBooks ...
- [老码团队]Swift中的协议 - 用协议来实现委托模式
委托是一种设计模式,它允许类或结构体将一些需要它们负责的功能交由(委托)给其他的类型的实例.在这种设计模式中,会涉及到几个角色: 公共接口(Interface):负责封装起需要被委托的功能 代理者(D ...
- Swift中的类和结构体(2)
Swift中的类和结构体(2) 异变方法 方法调度 影响函数派发方式 异变方法 在Swift中,值类型属性不能被自身的实例方法修改,编译器不会通过编译,报错Left side of mutating ...
- 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题
swift中开发选择图片上传,会使用到Tap Gesture Recognizer控件,对应 UITapGestureRecognizer API,以下是代码示例(取自IOS developer li ...
- Swift 中使用 SQLite——批量更新(事务处理)
本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...
- Swift 中使用 SQLite——打开数据库
关于Swift中使用SQLite,接下来可能会分别从打开.增.删.改.查,几个方面来介绍SQLite的具体使用,这一篇重点介绍一下如何打开. 定义全局数据库访问句柄 /// 全局数据库访问句柄 pri ...
- 探索 Swift 中的 MVC-N 模式
作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...
最新文章
- 初学python-字符串中引号的使用、input简介、强制类型转换、加减乘除简写、条件判断...
- python 0o-377 -0o377_Python : 反射
- Python基础06 循环
- 浙江省团校计算机考试试题及答案,2001年秋浙江省高校计算机等级考试试卷(二级C)及答案..doc...
- 32岁,程序员,年薪60W,果断辞职考进体制内,月薪5K
- IE和Windows系统中的彩蛋
- Oracle 10g新特性——正则表达式(转)
- 关于高速光耦6n137的使用总结_光耦合器应用电路的基本特性!-先进光半导体
- wait,notify,notifyAll用法解析
- 运筹说 第4期|掌握运筹学软件,走遍天下都不怕
- 几款免费开源的企业管理软件
- 苹果mp3软件_flac、WAV、m4a等音频格式转成MP3 ,一键搞定!
- conda deactivate python3_无法访问conda环境中的activate、deactivate或conda
- 【CVPR 2021】Unsupervised Multi-Source Domain Adaptation for Person Re-Identification (UMSDA)
- 拥塞窗口cwnd的理解
- 英语听力自动断句程序
- ROS 2 Dashing Diademata安装和使用文档(含Linux、Windows和OS X)
- 知乎上40个有趣回复,很精辟
- 移动应用界面设计的尺寸规范
- 数据争用(data race) 和竞态条件(race condition)
热门文章
- 深度学习100例-生成对抗网络(DCGAN)生成动漫人物 | 第20天
- 【Linux】26_文件服务FTP Server
- python中strip()的陷阱
- 邮件协议(SMTP)性能测试总结(Foxmail邮箱)
- selenium打开chrome浏览器代码
- ultraedit中换行键的替换
- 【聚类算法】sklearn聚类方法详解
- 牛人总结python中string模块各属性以及函数的用法,果断转了,好东西
- 图片相似度识别_deepface:人脸识别\特征分析
- Java蓝牙电话_Android mediaPlayer和蓝牙汽车/耳机电话