国产探花免费观看_亚洲丰满少妇自慰呻吟_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
本文版權歸作者和博客園共有,未經作者同意禁止轉載,作者保留追究法律責任的權利。請在文章頁面明顯位置給出原文連接,作者保留追究法律責任的權利。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仙桃市| 三亚市| 临颍县| 深圳市| 吴忠市| 新郑市| 白山市| 策勒县| 巴林右旗| 康马县| 莱西市| 渭源县| 太原市| 顺昌县| 时尚| 和田市| 平乐县| 阳信县| 游戏| 泌阳县| 澎湖县| 石泉县| 无锡市| 银川市| 肇源县| 崇左市| 罗源县| 聊城市| 洪泽县| 阳谷县| 偃师市| 盖州市| 台州市| 衢州市| 清原| 宁安市| 临邑县| 剑阁县| 丰宁| 聂拉木县| 德钦县|