国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Swift里performSelector方法的替代

2019-11-14 20:17:46
字體:
來源:轉載
供稿:網友

最近在回答StackOverflow的問題時,發現performSelector方法在Swift被去掉,Apple的注釋是這個方法被去掉是因為不安全:

NOTEThe performSelector: method and related selector-invoking methods are not imported in Swift because they are inherently unsafe.

如果在Swift調用這個方法會編譯出錯:

'performSelector' is unavailable: 'performSelector' methods are unavailable

方法一:

反復嘗試后,我發現可以使用 UIControl

func sendAction(_ action: Selector, to target: AnyObject!, forEvent event: UIEvent!)

下面是一段演示代碼:

import UIKitclass ViewController: UIViewController {                                override func viewDidLoad() {        super.viewDidLoad()        // Do any additional setup after loading the view, typically from a nib.                var control:UIControl = UIControl()        control.sendAction(Selector("greetings"), to: self, forEvent: nil)    }        func greetings() {        

Log打印出:

如果是Swift調用Objective-C類的target和action,可以參考下面的例子,假設有TestClass是Objective-C類,并且有getBarButtonItem返回UIBarButtonItem:

那么在Swift里可以用下面的代碼執行help方法:

Log打印出:

方法二:

可以使用NSThread.detachNewThreadSelector,好處是可以使用延遲,并且可以附帶object,下面是掩飾代碼:

方法三:

使用NSTimer:

  

Xcode 6 Beta2

另外請參考一篇不錯的文章:初探swift語言的學習筆記十一(performSelector)

作者:Yang Zhou
出處:http://yangzhou1030.VEVb.com
本文版權歸作者和博客園共有,未經作者同意禁止轉載,作者保留追究法律責任的權利。請在文章頁面明顯位置給出原文連接,作者保留追究法律責任的權利。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武宣县| 武义县| 海伦市| 剑川县| 清流县| 大邑县| 舒兰市| 呼和浩特市| 吉林市| 九江县| 离岛区| 宁德市| 灵宝市| 昌宁县| 阳山县| 通城县| 禹城市| 哈尔滨市| 丹东市| 阿坝| 肇庆市| 新巴尔虎左旗| 洛浦县| 景德镇市| 五家渠市| 盐亭县| 河间市| 濉溪县| 简阳市| 绥棱县| 葫芦岛市| 贡嘎县| 定日县| 微山县| 永定县| 亚东县| 宁武县| 蒙阴县| 铜陵市| 双峰县| 喀什市|