inflearn logo
inflearn logo

Alan iOS Concurrency - Tìm hiểu hàng đợi công văn và hàng đợi hoạt động

Lập trình đồng thời - Bao gồm tất cả các khái niệm về đồng bộ hóa và không đồng bộ cần thiết trong lập trình iOS, cũng như GCD và Hoạt động, mở rộng chúng.

(5.0) 63 đánh giá

828 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

iOS
iOS
Swift
Swift
concurrent
concurrent
iOS
iOS
Swift
Swift
concurrent
concurrent
allen님의 프로필 이미지

Tại sao phải cập nhật giao diện người dùng trên luồng chính?

Xin chào. Đã lâu rồi tôi mới chào đón bạn với tin tức mới.

Nó không khác gì,

Tại sao phải cập nhật giao diện người dùng trên luồng chính? Có một bài viết hay về câu hỏi này nên tôi đã đưa ra cách giải thích và muốn chia sẻ với bạn.

Tôi hy vọng đây có thể là một tài liệu tham khảo tốt.

(Nguồn gốc của bài viết)

https://medium.com/@duwei199714/ios-why-the-ui-need-to-be-updated-on-main-thread-fd0fef070e7f

(Tài liệu PDF được dịch)

https://drive.google.com/file/d/1dFw6sJsxV-huK3BoHXgDq-7rXy9yBq9l/view?usp=sharing

Tóm lại một cách ngắn gọn,

1) Nếu tất cả các thuộc tính của UIKit được thiết kế ở chế độ An toàn cho luồng, thì sự suy giảm hiệu suất như chậm lại có thể xảy ra, do đó nó không thể được thiết kế theo cách đó. (Ý định của Apple là thiết kế nó không an toàn cho luồng.)

2) Nó hoạt động thông qua một thiết kế trong đó runloop chính cập nhật chế độ xem đồng thời thông qua Chu trình xem bản vẽ , quản lý việc cập nhật chế độ xem, nhưng luồng nền (không phải luồng chính) thực hiện các thao tác đó với runloop của chính nó. được thực hiện, chế độ xem có thể hoạt động tùy ý. (Ví dụ  Ví dụ: khi xoay thiết bị, bố cục chế độ xem có thể không được sắp xếp lại cùng lúc.)

3) iOS có quy trình kết xuất để vẽ ảnh (Hoạt hình lõi -> Máy chủ kết xuất -> GPU -> Hiển thị) , nhưng khi nhiều luồng gửi các thay đổi đối với chế độ xem tương ứng của chúng tới GPU, GPU phải diễn giải tất cả thông tin, điều này làm chậm quá trình, có thể trở nên kém hiệu quả.

4) Mặc dù có một khung giao diện người dùng không đồng bộ do Facebook phát triển có tên là Kết cấu hoặc Thành phần, nhưng Chu trình vẽ chế độ xem sử dụng một phương pháp tương tự để cập nhật đồng thời luồng chính vào thời điểm thích hợp .

Như thế này  Đây là nội dung. Trên thực tế, đó là một bài viết khiến tôi phải suy nghĩ lại về việc liệu các bản cập nhật giao diện người dùng chỉ được phép có cấu trúc trên luồng chính hay không vì nhiều lý do tương tự như trên, không chỉ trong iOS mà còn trong Windows và các hệ điều hành khác.

Đây chỉ là một chủ đề mà bạn có thể nghĩ đến ít nhất một lần... Tôi hy vọng nó sẽ giúp ích được một chút ^^

Cảm ơn .

Bình luận 1
    rarebook922604님의 프로필 이미지

    Tôi không hiểu nó hoàn toàn, nhưng thật vui khi biết lý do cơ bản hơn!

1.379.733 ₫