10.12 में कई बड़े बदलाव हैं, लेकिन मेरी राय में सबसे बड़ी नई ऑटो-लेआउट प्रणाली (या संशोधित/पुराने लिखने वाले पुराने ... जो जानता है)। मैंने इस मुद्दे को प्रदर्शित करने के लिए एक सरल परियोजना तैयार की है। यह एक बटन के माध्यम से एक विभाजित दृश्य आइटम को ध्वस्त करने से संबंधित है। यह केवल 10.12 पर होता है। आपको बस इतना करना है कि परियोजना को संकलित करना और बटन पर क्लिक करना है। एक त्रुटि प्रस्तुत की जाएगी:मैकोज़ 10.12 ऑटो-लेआउट समस्याएं
2016-10-04 15: 10: 28.284296 परीक्षण -12 [64 9 32: 7425277] [लेआउट] के लिए गायब बाधाओं का पता चला। इसे रखा नहीं जा सकता क्योंकि आकार और उत्पत्ति को पूरी तरह से परिभाषित करने के लिए पर्याप्त बाधाएं नहीं हैं। लापता बाधाओं को जोड़ें, या अनुवाद सेट करेंअटोरोज़ाइजिंग MaskIntoConstraints = हाँ और बाधाएं आपके लिए उत्पन्न की जाएंगी। यदि यह दृश्य मैकोज़ 10.12 और बाद में मैन्युअल रूप से निर्धारित किया गया है, तो आप अपने ओवरराइड से [सुपर लेआउट] को कॉल नहीं करना चुन सकते हैं। डिबग करने के लिए DETECTED_MISSING_CONSTRAINTS पर ब्रेकपॉइंट सेट करें। यह त्रुटि केवल एक बार लॉग इन होगी।
(lldb) po $arg1 <NSSplitDividerView: 0x618000161980>
Am मैं पूरी तरह से गलत है या वहाँ 10.12 के साथ एक निश्चित समस्या है:
एक ब्रेकपाइंट हम पता कर सकते हैं कि समस्याग्रस्त दृश्य है स्थापित करने के बाद? और कृपया सलाह दें कि यदि संभव हो तो इस प्रकार की त्रुटियों को कैसे रोकें।
परियोजना github
से डाउनलोड किया जा सकता एक बार फिर मदद के लिए धन्यवाद।
मैं निकोलोव
मैं इस संदेश को केवल NSAlert.layout() पर कॉल करके ट्रिगर कर सकता हूं ताकि अलर्ट को तत्काल बाहर निकालने के लिए मजबूर किया जा सके। चूंकि इस मामले में कोई भी सुझाव काम नहीं करता है और त्रुटि से बचने के लिए कोई स्पष्ट तरीका नहीं है, इसलिए मैंने एक रडार दायर किया (rdar: // 28700495)। – rsfinn
मैं 'स्प्लिट व्यू' से 'झूठी' लौटकर इस मुद्दे का समाधान करता हूं (_ splitView: NSSplitView, shouldHideDividerAt dividerIndex: Int) -> मेरे 'NSSplitViewController' में बूल'। – LShi
@LShi: धन्यवाद मुझे एक ही समस्या थी और यह मेरे लिए भी काम करता था। – mschmidt