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

Sự khác biệt giữa @escaping@nonescaping Closures trong Swift là gì?

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

junior

Có bao nhiêu loại Collection trong Swift?

middle

Trong Swift, cách sử dụng defer được giải thích như thế nào?

senior

Framework SpriteKitSceneKit trong phát triển gì trong Swift?

Bình luận

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

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