iOS开发Swift-回调函数

发布时间 2023-09-19 19:57:24作者: 临易

回调函数:

回调函数是一种将函数作为参数传递给另一函数的策略。当特定事件或条件发生时,传递的函数(即回调函数)将被调用。这种机制允许在事件发生时执行自定义的代码,因此它是异步编程的重要组成部分。在Swift中,可以使用闭包(closure)或函数作为回调函数。

假设你有一个函数叫做greet(),它的作用是向别人打招呼。你可以将这个函数作为参数传递给另一个函数performAction(),并在特定时刻自动调用它。

下面是一个示例代码:

func greet() {  
    print("Hello, World!")  
}  
  
func performAction(callback: () -> Void) {  
    // 做一些事情...  
      
    // 在特定时刻调用回调函数  
    callback()  
}  
  
// 调用performAction()函数,并传递greet()函数作为回调函数  
performAction(callback: greet)

在这个例子中,performAction()函数接受一个回调函数作为参数,并在内部执行一些操作。在适当的时候,它会调用传递的回调函数,也就是greet()函数。这样,当performAction()函数执行完毕时,它会自动调用greet()函数来打招呼。

通过使用回调函数,你可以在运行时动态地更改要执行的代码,而不需要修改performAction()函数的实现。这使得代码更加灵活和可重用。

self:

如果回调函数需要访问对象的属性,那么可以将回调函数定义为一个类的方法,并在方法中使用self来引用当前对象。这样,在调用回调函数时,你可以通过对象实例来调用该方法,从而访问对象的属性。

在上面的示例中,如果greet方法需要访问Greeter类的属性,你可以将greet方法定义为Greeter类的一个成员方法,并在方法中使用self来引用当前对象。然后,在调用performAction函数时,你可以通过greeter对象来调用greet方法,从而访问greeter对象的属性。

performAction函数中,你不需要使用self来访问对象的属性,因为performAction函数只是一个普通的函数,并不是类的方法。在该函数中,你只能通过传递的参数来访问回调函数的属性和行为。

总结来说,如果你需要将回调函数定义为类的方法,并在方法中访问对象的属性,你可以在方法中使用self来引用当前对象。而在调用回调函数的函数中,你不需要使用self来访问对象的属性,只能通过传递的参数来与回调函数进行交互。