टी एल; डॉ
popViewController(animated:)
रिटर्न UIViewController?
, और कंपाइलर उस चेतावनी को दे रहा है क्योंकि आप मूल्य पर कब्जा नहीं कर रहे हैं। समाधान यह है कि इसे अंडरस्कोर में सौंपा जाए:
_ = navigationController?.popViewController(animated: true)
स्विफ्ट 3 बदलें
स्विफ्ट 3 से पहले, सभी तरीकों में डिफ़ॉल्ट रूप से "त्यागने योग्य परिणाम" था। जब आपने विधि वापस नहीं ली तो कोई चेतावनी नहीं होगी।
संकलक को यह बताने के लिए कि परिणाम पर कब्जा किया जाना चाहिए, आपको @warn_unused_result
विधि घोषणा से पहले जोड़ना होगा । यह तरीकों एक परिवर्तनशील रूप (उदा। होती हैं, के इस्तेमाल किया जाएगा sort
और sortInPlace
)। आप इसके @warn_unused_result(mutable_variant="mutableMethodHere")
संकलक को बताना चाहेंगे ।
हालाँकि, स्विफ्ट 3 के साथ, व्यवहार फ़्लिप है। सभी तरीकों ने अब चेतावनी दी है कि वापसी मूल्य पर कब्जा नहीं किया गया है। यदि आप संकलक को बताना चाहते हैं कि चेतावनी आवश्यक नहीं है, तो आप @discardableResult
विधि घोषणा से पहले जोड़ते हैं ।
यदि आप रिटर्न मान का उपयोग नहीं करना चाहते हैं, तो आपको इसे अंडरस्कोर पर असाइन करके कंपाइलर को स्पष्ट रूप से बताना होगा:
_ = someMethodThatReturnsSomething()
इसे स्विफ्ट 3 में जोड़ने के लिए प्रेरणा:
- संभावित बगों की रोकथाम (पूर्व
sort
सोच का उपयोग करके यह संग्रह को संशोधित करता है)
- अन्य सहयोगियों के लिए परिणाम पर कब्जा करने या न करने की स्पष्ट मंशा
UIKit एपीआई इस पर पीछे दिखाई देता है, रिटर्न वैल्यू को कैप्चर किए बिना @discardableResult
पूरी तरह से सामान्य (यदि अधिक सामान्य नहीं) उपयोग के लिए जोड़ रहा है popViewController(animated:)
।
अधिक पढ़ें