Rate this post

Trong Swift, bộ định thời được sử dụng để tạo các tác vụ lặp lại nhằm lên lịch làm việc với độ trễ. Nó là một lớp trước đây được gọi là NSTimer. Lớp bộ đếm thời gian của Swift cung cấp một cách linh hoạt để lên lịch công việc diễn ra trong tương lai một lần hoặc nhiều lần.

Các bài viết khác:

Hãy xem cách tạo bộ hẹn giờ lặp lại và không lặp lại, sử dụng các vòng chạy, theo dõi bộ hẹn giờ và cách bạn có thể giảm tác động năng lượng và sức mạnh của chúng.

Tạo bộ hẹn giờ lặp lại

Chúng ta có thể tạo và bắt đầu một bộ đếm lặp lại bằng cách sử dụng cú pháp sau:

Cú pháp

Hãy xem một ví dụ để minh họa cách tạo bộ đếm lặp lại:

Ví dụ:

Trong ví dụ trên,

  • Bộ đếm thời gian được tạo bằng phương thức lớp Timer.schedisedTimer (…) . Giá trị trả về của phương thức này được gán cho bộ định thời không đổi. Hằng số này bây giờ chứa một tham chiếu đến bộ đếm thời gian, sẽ được sử dụng sau này.
  • Các tham số của ScheduleTimer () là khoảng thời gian 1 giây. Nó sử dụng một cơ chế được gọi là target-action, một số userInfo được đặt thành nil và tham số lặp lại được đặt thành true.
  • Chúng tôi cũng đã mã hóa một hàm fire (). Đây là chức năng được gọi khi bộ hẹn giờ kích hoạt, tức là khoảng mỗi giây. Bằng cách đặt target thành self và selector thành #selector (fire), bạn cho biết rằng bất cứ khi nào bộ hẹn giờ kích hoạt, hàm fire () của self cần được gọi.

Giải thích thông số

Trong ví dụ này, 5 tham số được sử dụng để tạo bộ đếm thời gian.

  • timeInterval: Nó chỉ định khoảng thời gian giữa các bộ hẹn giờ kích hoạt tính bằng giây, loại là Double.
  • target: Nó chỉ định một cá thể lớp mà hàm cho bộ chọn sẽ được gọi
  • bộ chọn: Nó chỉ định chức năng gọi khi bộ hẹn giờ kích hoạt, với #selector (…)
  • userInfo: Nó chỉ định một từ điển với dữ liệu được cung cấp cho bộ chọn, hoặc nil.
  • lặp lại: Nó chỉ định xem bộ đếm thời gian này lặp lại hay không lặp lại.

Tạo bộ hẹn giờ không lặp lại

Để tạo bộ hẹn giờ không lặp lại, bạn chỉ cần đặt tham số lặp lại thành false . Bộ hẹn giờ sẽ chỉ kích hoạt một lần và ngay lập tức tự mất hiệu lực sau đó.

Thí dụ:

Lưu ý: Đoạn mã trên phải chạy trong ngữ cảnh lớp, ví dụ như trong lớp bộ điều khiển chế độ xem. Hàm fire () là một phần của lớp và self tham chiếu đến thể hiện của lớp hiện tại. 

Tạo bộ hẹn giờ bằng cách sử dụng Closure

Trong đoạn mã trên, khối tham số cuối cùng có một đóng. Việc đóng cửa có một bộ đếm thời gian tham số chính nó.

Ở đây, thuộc tính @objc được sử dụng vì nó làm cho hàm fire () khả dụng trong Objective-C. Lớp Timer là một phần của thời gian chạy Objective-C, đó là lý do chúng tôi sử dụng thuộc tính @objc đó.

Sự khác biệt giữa bộ hẹn giờ lặp lại và không lặp lại

Bạn phải chỉ định bộ hẹn giờ đang lặp lại hay không hoạt động tại thời điểm tạo. Sự khác biệt chính giữa bộ đếm thời gian lặp lại và không lặp lại là:

Bộ hẹn giờ không tăng tốc sẽ kích hoạt một lần và sau đó tự động vô hiệu hóa, do đó, nó ngăn bộ hẹn giờ kích hoạt lại.

Bộ hẹn giờ lặp lại kích hoạt và sau đó tự lên lịch lại trên cùng một vòng lặp. Bộ đếm thời gian lặp lại luôn tự lên lịch dựa trên thời gian bắn đã lên lịch, trái ngược với thời gian bắn thực tế.

Ví dụ: nếu bộ hẹn giờ được lên lịch để bắn vào một thời điểm cụ thể và cứ sau 10 giây, thời gian bắn theo lịch sẽ luôn rơi vào khoảng thời gian 10 giây ban đầu, ngay cả khi thời gian bắn thực tế bị trì hoãn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now