का कारण बनता है अगर मैं एक बंद करने और self?
UIView.animateWithDuration
अंदर के रूप में संदर्भ self
पर [weak self]
घोषित एप्लिकेशन दुर्घटना होगा:[कमजोर आत्म] को स्वयं के रूप में संदर्भित करना? अंदर animateWithDuration दुर्घटना
someFunc() { [weak self] (success) -> Void in
UIView.animateWithDuration(0.25) {
self?.someView.alpha = 1;
}
}
एक message sent to deallocated instance
साथ लेकिन अगर मैं खोलना स्वयं आगे वैकल्पिक समय की ऐसा नहीं टी
someFunc() { [weak self] (success) -> Void in
if let weakself = self {
UIView.animateWithDuration(0.25) {
weakself.someView.alpha = 1;
}
}
}
ऐसा क्यों है, मुझे लगता है कि इससे कोई फर्क नहीं पड़ता कि मैं कमजोर से संदर्भित करता हूं एलएफ क्योंकि इसे "बस" वैकल्पिक रूप से self?
को अनदेखा करना चाहिए। संदर्भ के लिए यह एक UICellView
जो पुनः आवंटित की जाती है में किया जाता है जब मैं UICollectionViewController
संपादित छोड़: सेब के साथ एक बग दायर: # 23492648
यह वास्तव में वास्तव में अजीब है, मुझे एक बग की तरह गंध करता है। बीटीडब्ल्यू अनावश्यक '; 'के साथ क्या हो रहा है? क्या आप एक समारोह बुला रहे हैं या यह एक संपत्ति है? – Kametrixom
यह इंगित करने के लिए धन्यवाद, मैंने इसे 'doSomething' के बजाय स्पष्टता के लिए संपादित किया। मैंने अपने कोडबेस में ';' का उपयोग करने के लिए धक्का दिया क्योंकि यह बयान के अंत को स्पष्ट करता है। ऐसी स्थितियां हैं जहां आप एक कथन को एक पंक्ति लपेट सकते हैं और यह सुपर स्पष्ट नहीं है :) – Shizam
यह एक अच्छी बग रिपोर्ट है, और आपको इसे ऐप्पल को रिपोर्ट करनी चाहिए। लेकिन यह सच है कि आपको हमेशा एक कमजोर काम में कमजोर रूप से गुजरने के दौरान कमज़ोर-मजबूत नृत्य करना चाहिए, जैसा कि आप दूसरे उदाहरण में करते हैं ('अगर कमजोर = स्वयं'), तो बस इसे करें और आगे बढ़ें। – matt