2012-03-29 11 views
6

की घोषणा हाल ही में एक Xcode 4.3 प्रोजेक्ट टेम्पलेट में डबल अंडरस्कोर अंतर है, कुछ @synthesze के रूप में घोषित किया गया है:एकल और @synthesize

@synthesize window = _window; 
@synthesize managedObjectContext = __managedObjectContext; 
@synthesize managedObjectModel = __managedObjectModel; 
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator; 
@synthesize navigationController = _navigationController; 

कुछ एक डबल अंडरस्कोर (__) उपसर्ग के रूप में साथ आते हैं। क्यूं कर?

readonly विशेषता के साथ कुछ भी करने के लिए?

@property (strong, nonatomic) UIWindow *window; 
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; 
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; 
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; 
@property (strong, nonatomic) UINavigationController *navigationController; 

उत्तर

3

यदि संभवतः वे आपके स्वयं के कार्यक्रम में उपयोग के लिए हैं, तो उन्हें शायद डबल अंडरस्कोर का उपयोग नहीं करना चाहिए। मुझे उम्मीद है कि यह उस टेम्पलेट उदाहरण को लिखने वाले व्यक्ति के हिस्से पर सिर्फ एक निरीक्षण है। व्यवहार में, यह असंभव है कि वे किसी भी समस्या का कारण बनेंगे।

सी मानक कार्यान्वयन के अपने उपयोग के लिए डबल अंडरस्कोर से शुरू होने वाले सभी पहचानकर्ताओं को सुरक्षित रखता है। चूंकि उद्देश्य-सी सी का एक सुपरसेट है, इसलिए आपको उद्देश्य-सी प्रोग्राम में उन पहचानकर्ताओं का उपयोग नहीं करना चाहिए।

सभी पहचानकर्ता कि एक अंडरस्कोर और या तो एक अपरकेस अक्षर या किसी अन्य अंडरस्कोर से शुरू हमेशा किसी भी उपयोग के लिए आरक्षित हैं: सी कल्पना, खंड 7.1.3 सुरक्षित पहचानकर्ता से।

1

शायद इस मामले में। आम तौर पर, सेब एक चर की बाहरी प्रति को संदर्भित करने के लिए _ प्रीफिक्स्ड नामों का उपयोग करता है (जैसे कि फ़ंक्शन के रूप में पारित होने पर, या संपत्ति के विपरीत प्रत्यक्ष रेफरी)। जिसने लिखा है कि कोड ने शायद सोचा था कि वे केवल पढ़ने के लिए अतिरिक्त _ जोड़कर चालाक थे, लेकिन यह आम तौर पर खराब अभ्यास है क्योंकि सी संकलक निर्देशों को निर्दिष्ट करने के लिए __ को रिजर्व करता है।

मैंने कभी भी सी संकलक __ वर्र्स के बारे में शिकायत नहीं देखी है, और एलएलवीएम दिमाग में नहीं लग रहा है, लेकिन शायद यह अच्छा अभ्यास नहीं है।

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