Câu hỏi phỏng vấn Swift
Câu hỏi

Sự khác biệt giữa @escaping và `@no...

Câu trả lời

Trong Swift, closures là các khối mã tự chứa có thể được truyền đi như là tham số trong các hàm, hoặc được sử dụng như là một loại dữ liệu. Có hai loại closures chính: @escaping@nonescaping.

@nonescaping Closures

  • Một @nonescaping closure là một closure được truyền như là tham số vào một hàm nhưng được gọi trong phạm vi của hàm đó. Nó không "thoát" ra khỏi hàm, tức là closure này sẽ được thực thi và hoàn thành trước khi hàm trả về kết quả.
  • Trong Swift 3 và các phiên bản sau, closures được coi là @nonescaping mặc định nếu không được chỉ định khác.
  • Closures @nonescaping giúp tối ưu hóa hiệu suất bởi vì trình biên dịch có thể tối ưu hóa quản lý bộ nhớ khi biết rằng closure sẽ không được sử dụng sau khi hàm kết thúc.

@escaping Closures

  • Một @escaping closure là một closure được truyền như là tham số vào một hàm nhưng có thể được gọi sau khi hàm đã trả về kết quả. Nó "thoát" ra khỏi phạm vi của hàm, có nghĩa là có thể được thực thi sau khi hàm kết thúc.
  • Closures @escaping thường đ...
expert

expert

Gợi ý câu hỏi phỏng vấn

middle

Sự khác biệt giữa các từ khóa openpublic trong Swift là gì?

middle

Khi nào sử dụng thuộc tính @objc trong Swift?

middle

Sự khác biệt giữa fileprivateprivate trong Swift là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào