[Xcode10 实际操作]八、网络与多线程-(18)PerformSelector消息处理方法:由运行时系统,负责去调用对象的指定方法

本文将演示PerformSelector消息处理方法。
在项目文件夹上点击鼠标右键弹出文件菜单。
【New File】->【Swift File】->【Next】->【Save As】:iOSApp.swift->【Create】
现在开始编写代码,创建Swift类【iOSApp.swift】

 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】

 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 }

猜你喜欢

转载自www.cnblogs.com/strengthen/p/10068977.html