2014-06-13 7 views
51

क्या मुझे अपने स्विफ्ट क्लास नाम को तीन-अक्षर उपसर्ग देना चाहिए जैसा कि Objective-C Conventions: Class Names Must Be Unique Across an Entire App द्वारा अनुशंसित किया गया है?स्विफ्ट: कक्षा उपसर्ग की आवश्यकता है?

+0

अब एप्पल भी 'NS' उपसर्ग के' NSNotificationCenter' तरह कक्षाओं के लिए जब स्विफ्ट में इस्तेमाल छुटकारा हो गया है। हालांकि, वे अभी भी 'NSObject' के लिए उपसर्ग रखते हैं, यही कारण है कि हम सभी यहां बहुत मजेदार हैं। –

उत्तर

61

नहीं, you do not need class prefixes in Swift, क्योंकि कक्षाएं उस मॉड्यूल में नामित हैं जहां वे रहते हैं।

आप के बीच (उदाहरण के लिए) स्विफ्ट से एक Array और एक Array वर्ग/struct है कि आप अपने अनुप्रयोग में घोषित किया है को स्पष्ट करने की जरूरत है, तो आप एक Swift.Array या एक MyProject.Array के रूप में यह लिखकर ऐसा कर सकते हैं। यही कारण है कि रूप में अच्छी तरह एक्सटेंशन के साथ काम करता है:

extension Swift.Array { 
    ... 
} 

extension MyProject.Array { 
    ... 
} 
+6

यदि आप उद्देश्य सी में आयात करते हैं तो क्या यह आगे बढ़ता है? – Jeef

+1

@ जेफ [यह स्टैक ओवरफ्लो उत्तर] (http://stackoverflow.com/a/26148391/2067021) यह इंगित करता है कि ऑब्जेक्टिव-सी में कक्षाएं आयात किए जाने पर टकराव नामकरण हो सकते हैं। – user2067021

+1

चूंकि आप 'objc' टैग के साथ निर्यात पर कक्षा के नाम चुनते हैं, मुझे लगता है कि आपको दोनों करना है, इसलिए स्विफ्ट 'सरल अलर्ट' में' DRSimpleAlert' बन जाता है –

14

नहीं है, उपसर्ग निश्चित रूप से neeeded नहीं है।

मान लें कि आपके ऐप में MyApp नाम है, और आपको अपना कस्टम UICollectionViewController घोषित करने की आवश्यकता है।

आप इस तरह उपसर्ग के लिए और उपवर्ग जरूरत नहीं:

class MAUICollectionViewController: UICollectionViewController {} 

इसे इस तरह कार्य करें:

class UICollectionViewController {} //no error "invalid redeclaration o..." 

क्यों?। क्योंकि आपने जो घोषणा की है उसे वर्तमान मॉड्यूल में घोषित किया गया है, जो आपका वर्तमान लक्ष्य है। UIKit से UIKit मॉड्यूल में UICollectionViewController घोषित किया गया है।

वर्तमान मॉड्यूल के भीतर इसका उपयोग कैसे करें?

var customController = UICollectionViewController() //your custom class 
var uikitController = UIKit.UICollectionViewController() //class from UIKit 

कैसे एक और मॉड्यूल से उन्हें अलग करने के लिए?

var customController = MyApp.UICollectionViewController() //your custom class 
var uikitController = UIKit.UICollectionViewController() //class from UIKit 
संबंधित मुद्दे