स्विफ्ट 4 के साथ, Apple एक नए संकलक चेतावनी के माध्यम से सलाह देता है कि हम #selector
इस परिदृश्य में उपयोग से बचें । इसे पूरा करने के लिए एक बहुत ही सुरक्षित तरीका है:
सबसे पहले, एक आलसी संस्करण बनाएं जिसका उपयोग अधिसूचना द्वारा किया जा सकता है:
lazy var didBecomeActive: (Notification) -> Void = { [weak self] _ in
// Do stuff
}
यदि आपको वास्तविक अधिसूचना को शामिल करने की आवश्यकता है, तो बस के _
साथ बदलें notification
।
अगला, हमने ऐप सक्रिय होने के लिए अवलोकन करने के लिए अधिसूचना सेट की।
func setupObserver() {
_ = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive,
object: nil,
queue:.main,
using: didBecomeActive)
}
यहाँ बड़ा बदलाव यह है कि कॉल करने के बजाय #selector
, अब हम ऊपर बनाए गए संस्करण को कॉल करते हैं। यह उन स्थितियों को समाप्त कर सकता है जहां आपको अमान्य चयनकर्ता क्रैश मिलते हैं।
अंत में, हम पर्यवेक्षक को हटा देते हैं।
func removeObserver() {
NotificationCenter.default.removeObserver(self, name: .UIApplicationDidBecomeActive, object: nil)
}
NSNotificationCenter
। धन्यवाद!