मैं ऑब्जेक्टिव-सी सीख रहा हूं और @ सिंबल से टकरा रहा हूं। इसका उपयोग विभिन्न परिदृश्यों में किया जाता है, उदाहरण के लिए एक स्ट्रिंग की शुरुआत में या एक्सेसर विधियों को संश्लेषित करने के लिए।
उद्देश्य-ग में @ प्रतीक का क्या अर्थ है?
मैं ऑब्जेक्टिव-सी सीख रहा हूं और @ सिंबल से टकरा रहा हूं। इसका उपयोग विभिन्न परिदृश्यों में किया जाता है, उदाहरण के लिए एक स्ट्रिंग की शुरुआत में या एक्सेसर विधियों को संश्लेषित करने के लिए।
उद्देश्य-ग में @ प्रतीक का क्या अर्थ है?
जवाबों:
@चरित्र, सी या सी ++ पहचानकर्ता में नहीं किया जाता है तो यह एक तरह से ऑब्जेक्टिव-सी भाषा कीवर्ड लागू करने के लिए प्रयोग किया जाता है कि होगा अन्य भाषाओं 'खोजशब्द के साथ संघर्ष नहीं। यह भाषा के "उद्देश्य" भाग को C या C ++ भाग के साथ स्वतंत्र रूप से रुकने में सक्षम बनाता है।
इस प्रकार बहुत कम अपवादों के साथ, किसी भी समय आप @किसी उद्देश्य-सी कोड में देखते हैं , आप सी या सी ++ निर्माणों के बजाय ऑब्जेक्टिव-सी निर्माणों को देख रहे हैं।
प्रमुख अपवाद हैं id, Class, nil, और Nil, आम तौर पर भाषा कीवर्ड के रूप में इलाज कर रहे हैं जो भले ही वे भी एक हो सकता है typedefया #defineउनके पीछे। उदाहरण के लिए, संकलक वास्तव idमें सूचक प्रकार रूपांतरण नियमों के संदर्भ में विशेष रूप से व्यवहार करता है जो घोषणाओं पर लागू होता है, साथ ही साथ जीसी लिखने के अवरोध उत्पन्न करने के निर्णय के लिए भी।
अन्य अपवाद हैं in, out, inout, oneway, byref, और bycopy; इनका उपयोग विधि पैरामीटर पर संग्रहण वर्ग एनोटेशन के रूप में किया जाता है और वितरित वस्तुओं को अधिक कुशल बनाने के लिए रिटर्न प्रकार। (वे क्रम है, जो कि कैसे सबसे अच्छा क्रमानुसार करने एक सौदे निर्धारित करने के लिए देख सकते हैं से उपलब्ध विधि हस्ताक्षर का हिस्सा बन जाते हैं।) वहाँ भी भीतर गुण हैं @propertyघोषणाओं, copy, retain, assign, readonly, readwrite, nonatomic, getter, और setter; वे केवल एक @propertyघोषणा के विशेषता अनुभाग में मान्य हैं ।
@।
@चरित्र, सी द्वारा अप्रयुक्त था तो यह विकल्प पार्स वह भी मौजूदा सी कोड के साथ 100% संगतता संरक्षित करने के लिए एक सुविधाजनक "एस्केप हैच" था।
से @ प्रतीक: ऑब्जेक्टिव-सी ट्यूटोरियल , कारण यह विभिन्न कीवर्ड के सामने पर है:
@ के उपयोग से मौजूदा C कंपाइलर पर ऑब्जेक्टिव-सी कंपाइलर को बोल्ट करना आसान हो जाता है। क्योंकि @ स्ट्रिंगर शाब्दिक को छोड़कर C में किसी भी संदर्भ में मान्य नहीं है, tokenizer (संकलक में एक प्रारंभिक और सरल कदम) एक स्ट्रिंग स्थिरांक के बाहर @ वर्ण को देखने के लिए संशोधित किया जा सकता है (टोकनकर्ता स्ट्रिंग शाब्दिक समझता है , इसलिए यह इसे अलग करने की स्थिति में है)। जब @ का सामना किया जाता है, तो टोकन कंपाइलर को "ऑब्जेक्टिव-सी मोड" में डाल देगा। (ऑब्जेक्टिव-सी पार्सर कम्पाइलर को नियमित C मोड पर वापस करने के लिए जिम्मेदार होगा जब वह ऑब्जेक्टिव-सी कोड के अंत का पता लगाता है)।
इसके अलावा जब एक स्ट्रिंग शाब्दिक के सामने देखा जाता है, तो यह सी में एक 'चार *' के बजाय एक एनएसएसट्रिंग बनाता है।
से MacRumors: ऑब्जेक्टिव-सी ट्यूटोरियल , जब स्ट्रिंग शाब्दिक के सामने:
@ "" NSString शाब्दिक भी हैं। यह अनिवार्य रूप से NSString के + stringWithUTF8String विधि के लिए शॉर्टहैंड है।
@ @ C स्ट्रिंग्स में यूनिकोड समर्थन भी जोड़ता है।
वहाँ से मैनुअल :
ऑब्जेक्टिव-सी फ्रेमवर्क आमतौर पर सी-स्टाइल स्ट्रिंग्स का उपयोग नहीं करते हैं। इसके बजाय, वे NSString ऑब्जेक्ट के रूप में स्ट्रिंग्स पास करते हैं।
NSString वर्ग स्ट्रिंग्स के लिए ऑब्जेक्ट रैपर प्रदान करता है, जिसमें आपके द्वारा अपेक्षित सभी फायदे हैं, जिसमें अंतर्निहित मेमोरी प्रबंधन शामिल है, जो मनमाने ढंग से लंबाई के स्ट्रिंग्स के लिए अंतर्निहित है, यूनिकोड के लिए समर्थन, प्रिंटफ-शैली स्वरूपण उपयोगिताओं, और अधिक। क्योंकि इस तरह के तार आमतौर पर उपयोग किए जाते हैं, उद्देश्य-सी निरंतर मूल्यों से एनएसएसट्रिंग ऑब्जेक्ट बनाने के लिए एक शॉर्टहैंड नोटेशन प्रदान करता है। इस आशुलिपि का उपयोग करने के लिए, आपको जो कुछ करना है, वह पूर्व के प्रतीक के साथ एक सामान्य, डबल-कोटेड स्ट्रिंग है, जैसा कि निम्नलिखित उदाहरणों में दिखाया गया है:
NSString *myString = @"My String\n"; NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];
@उपयोग किया जाता है। मैं इस तरह कोड देख रहा हूँ: mapperOptions = @{ kSTMapperVolumeResolutionKey: @(volumeResolution),... NSString के साथ कुछ नहीं करना है