2017-07-22 10 views
5

मैंने स्विफ्ट here में ऐरे के लिए कॉपी-ऑन-राइट कार्यान्वयन के बारे में पढ़ा।स्विफ्ट में कौन से मूल्य प्रकार कॉपी-ऑन-राइट का समर्थन करते हैं?

मानक लाइब्रेरी में सभी चर-आकार संग्रहों की तरह Arrays, कॉपी-ऑन-राइट ऑप्टिमाइज़ेशन का उपयोग करें। एक सरणी की एकाधिक प्रतियां एक ही स्टोरेज साझा करती हैं जब तक आप प्रतियों में से किसी एक को संशोधित नहीं करते। जब ऐसा होता है, तो संशोधित सरणी अपने भंडारण को अपनी विशिष्ट स्वामित्व वाली प्रतिलिपि के साथ बदल देती है, जिसे तब जगह में संशोधित किया जाता है। अनुकूलन कभी-कभी लागू होते हैं जो प्रतिलिपि की मात्रा को कम कर सकते हैं। आप किसी भी जानकारी के बारे में जो संरचना की नकल-ऑन-राइट का समर्थन करता है अगर

मैं सोच रहा था।

उत्तर

5

कॉपी-ऑन लेखन String और सभी संग्रह प्रकारों के लिए समर्थित है - Array, Dictionary और Set

इसके अलावा, कंपाइलर किसी भी संरचना पहुंच को अनुकूलित करने के लिए स्वतंत्र है और प्रभावी रूप से आपको कॉपी-ऑन-राइट सेमेन्टिक्स देता है, लेकिन इसकी गारंटी नहीं है।

+0

"गारंटी नहीं है" इसे रखने का एक तरीका है। यदि आप कॉपी-ऑन-राइट सेमेन्टिक्स चाहते हैं, तो आप स्पष्ट रूप से 'isKnownUniquelyReferenced (& ref) 'का उपयोग करते हैं। (आपको भी "केवल इस फ़ंक्शन को उचित थ्रेड सिंक्रनाइज़ेशन के साथ म्यूटेटिंग विधियों से कॉल करना होगा"; ध्यान दें कि टेक्स्ट इस बात का संकेत नहीं देता है कि मानक असंक्रमित संग्रह इस उल्लंघन का उल्लंघन करने से कैसे प्रबंधित होते हैं। [न ही यह आधिकारिक दस्तावेज़] [https: // github। कॉम/सेब/स्विफ्ट/ब्लॉब/मास्टर/डॉक्स/ऑप्टिमाइज़ेशनटिप्स.स्ट # सलाह-उपयोग-प्रति-लेखन-सेमेंटिक्स-बड़े-मूल्यों के लिए)) https://marcosantadev.com/copy-write-swift-value -types / – sourcejedi

संबंधित मुद्दे