cocoa - Is NSSizeFromCGSize nothing more than a cast operation? -
स्रोत इस प्रकार है:
NS_INLINE NSSize NSSizeFromCGSize (CGSize cgsize) {union _ {NSSize ns; CGSize cg;}; वापसी ((संघ _ *) और cgsize) - & gt; एनएस; } मेरे लिए यह सिर्फ एक अतिरक्त कलाकार की तरह लग रहा है (मूल रूप से इरादा से भिन्न मेमोरी का एक हिस्सा पढ़ना)। क्या कोई कारण है कि इस वाक्यविन्यास की आवश्यकता है? मैं केवल इसलिए पूछता हूं क्योंकि मैंने इससे पहले कभी नहीं देखा है।
हां, यह प्रभावी ढंग से एक कलाकार है सी में, और इसलिए उद्देश्य- सी, आप एक संरचना प्रकार को दूसरे में नहीं डाल सकते - जो सामान्य रूप से अच्छी बात है! हालांकि आप किसी सूचक को किसी भी चीज़ को कुछ और करने के लिए डाल सकते हैं - जो सामान्य रूप से खतरनाक है ...
तो अगर, और केवल तभी, आप वास्तव में जानते हैं कि दो संरचना समान हैं, आप मूल्य से कास्ट कर सकते हैं वेरिएबल ( & amp; cgsize ) के पते को लेकर एक संरचना प्रकार के एक वैरिएबल को अन्य संरचना प्रकार के मान के लिए, परिणामी संकेतक का कास्टिंग ( (union _ *) ) दर्ज करें, और फिर प्रकार डास्ट वैल्यू प्राप्त करने के लिए पॉइंटर ( - & gt; एनएस ) को dereferencing। कोई सभ्य संकलक इसे दूर करेगा और मूल्य की एक सीधी प्रतिलिपि करेगा।
Comments
Post a Comment