Với Swift 4, Apple khuyên thông qua cảnh báo trình biên dịch mới rằng chúng tôi tránh sử dụng #selector
trong kịch bản này. Sau đây là một cách an toàn hơn nhiều để thực hiện điều này:
Đầu tiên, tạo một var lười biếng có thể được sử dụng bởi thông báo:
lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in
// Do stuff
}
Nếu bạn yêu cầu thông báo thực tế được bao gồm, chỉ cần thay thế _
bằng notification
.
Tiếp theo, chúng tôi thiết lập thông báo để quan sát thấy ứng dụng sẽ hoạt động.
func setupObserver() {
_ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive,
object: nil,
queue:.main,
using: didBecomeActive)
}
Thay đổi lớn ở đây là thay vì gọi a #selector
, bây giờ chúng ta gọi var được tạo ở trên. Điều này có thể loại bỏ các tình huống mà bạn gặp sự cố bộ chọn không hợp lệ.
Cuối cùng, chúng tôi loại bỏ người quan sát.
func removeObserver() {
NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)
}
NSNotificationCenter
. Cảm ơn bạn!