Computer >> Máy Tính >  >> Lập trình >> IOS

Làm cách nào để gọi một phương thức sau một khoảng thời gian trì hoãn trong Swift (iOS)?

Trong bài đăng này, chúng ta sẽ xem cách bạn có thể trì hoãn một cuộc gọi phương thức bằng Swift. Sau đây, chúng tôi sẽ xem bạn có thể đạt được điều tương tự theo hai cách như thế nào,

Vì vậy, hãy bắt đầu,

Chúng ta sẽ thấy cả ví dụ trong Playground,

Bước 1 - Mở Xcode → Sân chơi mới.

Trong cách tiếp cận đầu tiên, chúng tôi sẽ sử dụng phương thức thể hiện asyncAfter (deadline:execute :), lập lịch thực thi một hạng mục công việc tại thời điểm đã chỉ định và trả về ngay lập tức.

Bạn có thể đọc thêm về nó tại đây https://developer.apple.com/documentation/dispatch/dispatchqueue/2300020-asyncafter

Bước 2 - Sao chép mã dưới đây trong Playground và chạy,

func functionOne() {
   let delayTime = DispatchTime.now() + 3.0
   print("one")
   DispatchQueue.main.asyncAfter(deadline: delayTime, execute: {
      hello()
   })
}
func hello() {
   print("text")
} functionOne()

Ở đây chúng ta đang tạo một hàm functionOne, nơi đầu tiên chúng ta khai báo thời gian trễ là 3 Giây. Sau đó, chúng tôi đang sử dụng asyncAfter nơi chúng tôi đưa ra thời gian trễ làm tham số và yêu cầu thực thi hàm hello () sau 3 giây.

Nếu chúng ta chạy chương trình trên trước tiên sẽ in “một” thì sau 3 giây “văn bản” sẽ in.

Trong cách tiếp cận thứ hai, chúng tôi sẽ sử dụng NSTimer,

Bạn có thể sao chép mã dưới đây trong ứng dụng Xcode → Single View

class ViewController: UIViewController {
   override func viewDidLoad() {
      super.viewDidLoad()
      print("one")
      Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(ViewController.hello), userInfo: nil, repeats: false)
   }
   @objc func hello() {
      print("text")
   }
}

Chạy ứng dụng, bạn sẽ thấy cùng một đầu ra, một đầu ra được in và sau 3 giây văn bản sẽ được in.