दो स्विफ्ट enums पर विचार करें:एक शुद्ध स्विफ्ट एनम की तुलना में @objc enum का अलग विवरण क्यों है?
enum Foo: Int {
case bar
}
@objc enum Baz: Int {
case qux
}
अगर मैं print
प्रत्येक इन enums के case
के लिए गए थे, मैं एक ही परिणाम उम्मीद करेंगे। इसके बजाय, मैं कुछ अप्रत्याशित देखें:
print(Foo.bar) // "bar\n"
print(Baz.qux) // "Baz\n"
क्यों एक @objc
enum का मामला मुद्रण enum नाम मुद्रित, एक शुद्ध स्विफ्ट enum की case
प्रिंट करते समय वास्तविक case
नाम मुद्रित करता है? @objc
जोड़ना enum के डीबग विवरण को बदलता है?
स्विफ्ट एनम्स ओबीजेसी की तुलना में अधिक मेटाडेटा (केस लेबल्स) लेते हैं। ओबीजेसी enums सिर्फ int की एक श्रृंखला है, जिसके साथ वे केस लेबल का कोई वास्तविक ज्ञान नहीं है। आप enum पर स्विच करके और विभिन्न तारों को लौटकर इसे प्राप्त कर सकते हैं: http://stackoverflow.com/a/14651888/3141234 – Alexander
@Alexander आपको बहुत धन्यवाद! यह अंत में मुझे कुछ तरह का अर्थ बनाता है। मैंने सोचा कि मैं पागल हो रहा था क्योंकि मैंने देखा है कि सभी पदों ने सुझाव दिया है कि स्विफ्ट में एक enum प्रिंटिंग मामले को दिखाएगा, भले ही मैं स्पष्ट रूप से इस मामले का उदाहरण देख रहा था कि यह मामला नहीं है (CBCentralManagerState)। धन्यवाद! – vegather