यहाँ संक्षिप्त उत्तर है।
रीडराइट बनाम पाठक यह निर्धारित करता है कि संश्लेषित संपत्ति में एक संश्लेषित एक्सेसर है या नहीं (रीडराइट में एक सेटर है और डिफ़ॉल्ट है, केवल पढ़ा नहीं जाता है)।
असाइन बनाम कमजोर बनाम बनाम बनाम प्रतिलिपि निर्धारित करता है कि संश्लेषित एक्सेसर्स उद्देश्य-सी मेमोरी प्रबंधन योजना के साथ कैसे सहभागिता करते हैं।
और अब लंबे समय तक उत्तर के लिए:
परमाणु वी nonatomic
यह मानते हुए कि आप विधि कार्यान्वयन @synthesizing कर रहे हैं, परमाणु बनाम गैर-परमाणु परिवर्तन उत्पन्न कोड। यदि आप अपना खुद का सेटर/गेटर्स लिख रहे हैं, परमाणु/nonatomic/retain/असाइन/कॉपी केवल सलाहकार हैं।
परमाणु के साथ, संश्लेषित सेटटर/गेटर यह सुनिश्चित करेगा कि किसी भी अन्य थ्रेड पर सेटटर गतिविधि के बावजूद, एक पूर्ण मूल्य हमेशा गेटटर से या सेटटर द्वारा सेट किया जाता है। यही है, अगर थ्रेड ए गेटटर के बीच में है, तो थ्रेड बी सेटटर को कॉल करता है, एक वास्तविक व्यवहार्य मूल्य - एक ऑटोरेलेज्ड ऑब्जेक्ट, सबसे अधिक संभावना - ए
में कॉलर को वापस कर दिया जाएगा nonatomic में, ऐसी कोई गारंटी नहीं दी जाती है। इस प्रकार, परमाणु से nonatomic काफी तेज है।
क्या परमाणु नहीं करता है थ्रेड सुरक्षा के बारे में कोई गारंटी देता है। यदि थ्रेड ए थ्रेड बी और सी के साथ एक साथ गेटर को अलग-अलग मानों के साथ बुला रहा है, तो थ्रेड ए को वापस दिए गए तीन मानों में से कोई एक प्राप्त हो सकता है - किसी भी सेटर्स से पहले या सेटर्स में पास किए गए मानों में से एक बी और सी में इसी तरह, वस्तु बी या सी के मूल्य के साथ समाप्त हो सकती है, बताने का कोई तरीका नहीं है।
डेटा अखंडता सुनिश्चित करना - बहु-थ्रेडेड प्रोग्रामिंग की प्राथमिक चुनौतियों में से एक - अन्य माध्यमों द्वारा हासिल किया जाता है।
असाइन, कमजोर, बनाए रखने, कॉपी
संक्षेप में, बनाम कमजोर आवंटित बनाम बनाए रखने बनाम प्रति निर्धारित करता है कि संश्लेषित accessors ऑब्जेक्टिव-सी स्मृति प्रबंधन योजना के साथ बातचीत:
- असाइन डिफ़ॉल्ट है और बस एक चर असाइनमेंट करता है। यह स्वामित्व का दावा नहीं करता है, इसलिए संपत्ति के सूचक द्वारा इंगित ऑब्जेक्ट किसी भी समय गायब हो सकता है अगर किसी अन्य ने बनाए रखने या अन्य माध्यमों के माध्यम से खुद को स्वामित्व नहीं दिया है। एआरसी पर्यावरण में, असाइन यह सुनिश्चित नहीं करता है कि पॉइंटर्स लटक नहीं पाएंगे, जिसका अर्थ है कि एक पॉइंटर जंक को इंगित कर सकता है यदि दूसरी तरफ ऑब्जेक्ट को हटा दिया गया हो।
- कमजोर असाइन करने के समान है, सिवाय इसके कि यह पॉइंटर्स को शून्य कर देगा जो उन्हें हटाए जाने से रोकने के लिए हटाए गए ऑब्जेक्ट्स को ले जाते हैं। कमजोर केवल एआरसी पर्यावरण में उपलब्ध है।
- बरकरार रखता है कि नया मान भेजा जाना चाहिए - असाइनमेंट पर पुराना और पुराना मूल्य भेजा गया रिलीज। बनाए रखना भी मजबूत के रूप में जाना जाता है।
- प्रतिलिपि निर्दिष्ट करती है कि नया मान भेजा जाना चाहिए-असाइनमेंट पर कॉपी करें और पुरानी मान प्रेषित रिलीज। प्रतिलिपि अक्सर उन गुणों के लिए उपयोग की जाती है जिनमें संपत्ति के प्रकार में एक परिवर्तनीय चचेरे भाई (एनएसएआरआरई/एनएसएमयूटेबलएरे) होता है ताकि दूसरों को उत्परिवर्तनीय संस्करणों में भेजने और उन्हें बदलने/उन्हें अपनी पीठ के पीछे बदलकर रोकने में मदद मिल सके।
याद रखें कि बनाए गए ऑब्जेक्ट पर बनाए/मजबूत किया जाता है (यह संदर्भ गणना को बढ़ाता है) जबकि प्रतिलिपि एक नई वस्तु बनाती है। तो अंतर यह है कि क्या आप ऑब्जेक्ट में एक और बनाए रखना चाहते हैं या पूरी तरह से नई ऑब्जेक्ट बनाना चाहते हैं।
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html – sosborn
@ सोसबोर्न ताकि आप कोमा द्वारा अलग किए गए कोष्ठक के भीतर एकाधिक विकल्प हो सकें? – makaed
@makaed हां, लेकिन केवल एक जो मेमोरी प्रबंधन से संबंधित है –