2012-09-11 10 views
14

मुझे लगता है कि मैं खुद को एक्सकोड के ऑटो इंडेंटेशन से निपटने में इतना समय बर्बाद कर रहा हूं, और मुझे यह पूछना है कि मेरे पास कुछ सेटिंग्स हैं या नहीं? असल में यदि मैं किसी विधि के भीतर कोड इंडेंट करने में समय बिताता हूं, और उसके बाद उस पूरे विधि की प्रतिलिपि बनाता हूं और इसे पेस्ट करता हूं, तो नया पेस्ट विधि उस मूल स्थान को बनाए रखता है जिसे मैंने मूल पर लागू किया है ...एक्सकोड का ऑटो इंडेंटेशन इतना बुरा क्यों है? और मैं इसे बेहतर कैसे बना सकता हूं?

उदाहरण के लिए, यहां एक स्क्रीनशॉट है जहां शीर्ष विधि मैंने एक सरणी की सभी वस्तुओं को इंडेंट किया है, इसलिए उन्हें ठीक से रेखांकित किया गया है ... फिर मैंने पूरी विधि का चयन किया, प्रतिलिपि बनाई और चिपकाया, और आप नीचे दी गई विधि को इंडेंटेशन को गड़बड़ कर सकते हैं।

my indentation settings

+4

जब आप कमांड-वी के बजाय Shift-Option-Command-V का उपयोग करते हैं और आपकी स्वरूपण को बनाए रखा जाएगा। –

+0

आपको यह चाल पसंद आएगी: फ़ंक्शन के दायरे में कोड की एक पंक्ति बनाएं। सुनिश्चित करें कि यह अर्द्ध लंबा है। इसके बाद {नीचे दी गई रेखा पर, इसे बंद करें या नहीं, इससे कोई फर्क नहीं पड़ता। फिर, अपनी कर्सर को पहली पंक्ति के अंत में रखें, स्पेस (या टैब) हिट करें, फिर एंटर दबाएं। मैं बस उस बग को पुन: पेश करना पसंद करता हूं। यदि आपको यह नहीं मिलता है, तो कुछ और अक्षर जोड़ें, लेकिन लाइन को नई लाइन रैपिंग के पीछे जाने के लिए पर्याप्त समय तक न बनाएं। आपका कर्सर अब आगे और नीचे दिखाई देगा {, फिर भी सही क्षेत्र में टेक्स्ट दिखाता है। बेकार, लेकिन हास्यास्पद एक मैं एक मजेदार पार्टी-शो-ऑफ चाल के रूप में एक्सकोड 4 पर repro कर सकते हैं –

उत्तर

0

वर्क्स के रूप में इरादा:

enter image description here

मैं Xcode 4.4.1 का उपयोग कर रहा है, यहाँ मेरा सेटिंग कर रहे हैं।

…Objects: और forKeys: को उसी विधि हस्ताक्षर का हिस्सा बनाने के रूप में गठबंधन किया जाना चाहिए।

यदि आप नई वस्तु शाब्दिक वाक्य विन्यास का उपयोग अपने कोड फ़ॉर्मेट करने के लिए आसान हो सकता है:

- (int)minBrokenPieces { 
    NSDictionary *mapping = [NSDictionary dictionaryWithObjects:@[@"3", @"4", @"4", @"5", @"6", @"7", @"8"] 
                 forKeys:[Note types]]; 
    [(NSString *)mapping[self.note.type] integerValue]; 
} 

कोड खुद के लिए के रूप में, यह थोड़ा खतरनाक एक ही स्थान पर इन स्थिरांक और टिप्पणी प्रकारों को परिभाषित करने लगता है कहीं। साथ ही, स्ट्रिंग का उपयोग क्यों करें, जब NSNumbers पर्याप्त होगा?

(यह कोड मानता है कि यह फ़ंक्शन केवल एक थ्रेड से ही बुलाया जाता है)।

- (int)minBrokenPieces { 
    static NSDictionary *mappings; 
    if (!mappings) { 
     mappings = @{ 
      noteType1 : @3, 
      noteType2 : @4, 
      noteType3 : @4, 
      noteType4 : @5, 
      noteType5 : @6, 
      noteType6 : @7, 
      noteType7 : @8, 
     }; 
    } 
    NSAssert(mappings[self.note.type] != nil, @"Used a note type for which there is no minBrokenPieces defined"); 
    return [mappings[self.note.type] intValue]; 
} 
संबंधित मुद्दे

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