[Xcode 實際操做]8、網絡與多線程-(18)PerformSelector消息處理方法:由運行時系統,負責去調用對象的指定方法

目錄:[Swift]Xcode實際操做html

本文將演示PerformSelector消息處理方法。swift

在項目文件夾上點擊鼠標右鍵彈出文件菜單。app

【New File】->【Swift File】->【Next】->【Save As】:iOSApp.swift->【Create】ide

如今開始編寫代碼,建立Swift類【iOSApp.swift】post

 1 import Foundation
 2 
 3 //建立一個繼承自基礎對象的類
 4 class IOSApp: NSObject{
 5     //給類添加一個無參方法,
 6     @objc func printInformation()
 7     {
 8         //在控制檯打印輸出日誌
 9         print("Interactive Tutorials for Xcode")
10     }
11     //給類添加一個含參方法,
12     @objc func buyApp(_ app:String)
13     {
14         //在控制檯打印包含輸入參數的日誌
15         print("Buy the app:\(app)")
16     }
17 }

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】spa

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4 
 5     override func viewDidLoad() {
 6         super.viewDidLoad()
 7         // Do any additional setup after loading the view, typically from a nib.
 8         
 9         //初始化上文建立的IOSApp類對象
10         let app = IOSApp()
11         //判斷對象是否存在,以某個名稱命名的方法
12         if(app.responds(to: Selector(("printInformation"))))
13         {
14             //而後調用對象的指定方法,
15             //這種方法的調用方式,是由運行時系統,負責去找對應的方法,
16             //在編譯時不作任何校驗。
17             app.perform(Selector(("printInformation")))
18         }
19 
20         //判斷對象是否存在,以某個名稱命名的方法
21         if(app.responds(to: Selector(("buyApp:"))))
22         {
23             //使用一樣的方式,執行帶有參數的方法,並傳遞相關的參數。
24             app.perform(Selector(("buyApp:")), with: "Excel interactive tutorials")
25             //在執行某個方法時,還能夠增長延遲執行的功能。
26             app.perform(Selector(("buyApp:")), with: "Photoshop tutorials", afterDelay: 2)
27         }
28     }
29 
30     override func didReceiveMemoryWarning() {
31         super.didReceiveMemoryWarning()
32         // Dispose of any resources that can be recreated.
33     }
34 }
相關文章
相關標籤/搜索