2010-03-02 19 views
7

मैं iPhone एपीआई सीख रहा हूँ के रूप में, पुस्तक मैं उपयोग कर रहा हूँ मुझे इंटरफ़ेस बिल्डर के साथ सब कुछ संभव कर दिया है। हम (कभी-कभी अकेले) कोड लिख रहे हैं, लेकिन मुझे सच में लगता है कि मुझे इंटरफ़ेस बिल्डर को अच्छी तरह से जानना है।मुझे इंटरफ़ेस बिल्डर का उपयोग कब करना चाहिए?

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

इसके अलावा: यदि आप सुझाव देते हैं कि "यह निर्भर करता है कि आप क्या कर रहे हैं," यह किस पर निर्भर करता है? इंटरफ़ेस बिल्डर का उपयोग करने का निर्णय कैसे लेना चाहिए या नहीं?

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

उत्तर

13

इंटरफ़ेस बिल्डर वास्तव में क्षुधा बनाने के लिए प्रयोग किया जाता है। किसी भी कोको-आधारित मैक ऐप पर नज़र डालें - जो कि एडोब या माइक्रोसॉफ्ट द्वारा नहीं है - और आप इसे निब्स से भरे हुए देखेंगे। इंटरफ़ेस बिल्डर के बिना आईफोन ऐप्स बनाने के लिए यह थोड़ा अधिक आम है (क्योंकि मूल एसडीके आईबी के बिना भेज दिया गया है), लेकिन यह अभी भी एक बहुत ही सामान्य रूप से इस्तेमाल किया जाने वाला टूल है।

इंटरफ़ेस बिल्डर और अधिकांश अन्य जीयूआई बिल्डरों के बीच का अंतर यह है कि कोको और इंटरफेस बिल्डर को एक दूसरे के साथ दिमाग में डिजाइन किया गया था। वास्तव में, यदि आप Cocoa mailing list archives खोज, आप सोच है कि यह कैसे इंटरफ़ेस बिल्डर का उपयोग करके के बिना एक कोको अनुप्रयोग बनाने के लिए संभव है पिछले कुछ वर्षों में बहुत से लोग मिल जाएगा। (उत्तर हमेशा एक ही होता है: आप इसे कोड में कर सकते हैं, लेकिन आप बस अपना समय बर्बाद कर रहे हैं और एक अच्छा इंटरफ़ेस डिज़ाइन करना कठिन बनाते हैं।)

+0

धन्यवाद, यह मैं क्या सोच रहा था की तरह है। कम से कम यह संदर्भ गिनती से भरे दिन पर एक सकारात्मक नोट है। –

+0

मुझे पता है कि यह एक पुराना सवाल है, और एक पुराना उत्तर - हालांकि मैं इस जवाब से पूरी तरह से सहमत हूं। – Moszi

+0

@ मोस्ज़ी, आप यहां चक के जवाबों के माध्यम से यहां भी जा सकते हैं। वे लगातार अंतर्दृष्टिपूर्ण और जानकारीपूर्ण हैं। –

3

इंटरफ़ेस बिल्डर महान है यदि आप मानक का उपयोग करने की योजना बना रहे हैं यूआईकिट यूजर इंटरफेस तत्व। इंटरफ़ेस बिल्डर का उपयोग करना UIKit आधारित यूजर इंटरफेस डिजाइन करने के लिए भी मदद करता है आप Apple iPhone Human Interface Guidelines के अनुरूप।

केवल कुछ मुट्ठी भर मामले हैं जहां आप इंटरफ़ेस बिल्डर का उपयोग नहीं करना चाहते हैं, सबसे स्पष्ट एक ऐसा गेम है जो अपना अनूठा रूप और अनुभव प्रदान करता है।

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

+1

धन्यवाद ब्रायन, यह अन्य प्लेटफार्मों पर अन्य जीयूआई उपकरणों के साथ सच नहीं है। बिल्डरों के साथ बनाए गए कोड अक्सर-बार भयानक लगते हैं और बनाए रखने में कठोर हो सकते हैं। तो मुझे नहीं लगता कि यह किसी अन्य उपकरण की तरह है। ऐसा लगता है कि इसका उपयोग न करने के साथ-साथ कभी-कभी इसका उपयोग नहीं किया जाता है। –

3

इंटरफ़ेस बिल्डर के लिए एक महान उपकरण है। जितना संभव हो उतना प्रयोग करें।
आप केवल इंटरफ़ेस बिल्डर का उपयोग कर कुछ नहीं कर सकता है, तो यह कोड है कि मिश्रण IBOutlets और कोड, या केवल कोड में ऐसा लिखने के लिए समय है।

2

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

यह उद्देश्य-सी में रनटाइम युग्मन है जो यह सब संभव बनाता है। मैं कोई अन्य भाषा वास्तव में इसे खींच नहीं सकता है।

+0

शायद मैं गलत हूं, लेकिन मुझे लगता है कि जावा में भी रनटाइम युग्मन (प्रतिबिंब और गतिशील आमंत्रण के माध्यम से) है ... हालांकि कोई इंटरफ़ेस निर्माता नहीं है, यह सैद्धांतिक रूप से कई भाषाओं में संभव है। नहीं? –

+1

जावा को उद्देश्य-सी द्वारा भाग में प्रेरित किया गया था, इसलिए यह करीब आ गया लेकिन आईआईआरसी, जावा के पास "आईडी" संदर्भ का कोई समकक्ष नहीं है, इसलिए यह इस संबंध में उद्देश्य-सी के रूप में लचीला नहीं है। प्रत्येक भाषा में कुछ ऐसा होता है जो दूसरों की तुलना में बेहतर होता है और रनटाइम युग्मन उद्देश्य-सी फोर्टे होता है। – TechZen

4

हां छोटा अंतर है। अंतर यह है कि आईबी थोड़ा अधिक स्टोरेज और रैम मेमोरी का उपयोग करता है जो प्रोग्रामेटिक रूप से जेनरेट इंटरफ़ेस है। मेरा सरल उदाहरण यहां है।{मैं Obj सी में नया हूँ}

enter image description here

स्रोत कोड और यहाँ बाइनरी एप्लिकेशन http://www.mediafire.com/download/9ph1zs1kyag9f1g/TestDifference_IB-Programmatically.zip

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