2010-05-04 15 views
14

क्या कोई अच्छा कारण है कि मुझे XIB/NIB फ़ाइलों का उपयोग अत्यधिक अनुकूलित यूआई और व्यापक एनिमेशन और सुपर कम मेमोरी पदचिह्न आवश्यकताओं के साथ क्यों नहीं करना चाहिए?XIB फ़ाइलों का उपयोग न करने के अच्छे कारण क्यों हैं?

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

तो जब कोई मुझसे पूछता है कि क्या एक्सआईबी अच्छा है, तो मैं आम तौर पर कहता हूं: हाँ, अगर आप क्रोधित उबाऊ इंटरफेस बनाना चाहते हैं और प्रदर्शन के बारे में ज्यादा परवाह नहीं करते हैं, तो आगे बढ़ें। लेकिन XIB का उपयोग न करने का कोई और कारण क्यों हो सकता है?

क्या मैं एकमात्र आईफोन डेवलपर हूं जो इस कारण से प्रोग्रामेटिक रूप से सबकुछ कर रहा है?

+2

समुदाय विकी होना चाहिए। –

+0

यह समुदाय विकी अब – dontWatchMyProfile

उत्तर

11

मुझे लगता है कि इंटरफेस बिल्डर मैक (और विस्तार, आईफोन) सॉफ्टवेयर विकास की सबसे बड़ी संपत्तियों में से एक है। जीयूआई दृश्य हैं; क्यों उन्हें एक दृश्य इंटरफ़ेस का उपयोग कर बनाते हैं? आईबी इतना लचीला है कि आप अपने "जेनेरिक" घटकों का उपयोग करके एक इंटरफ़ेस डाल सकते हैं, और फिर आवश्यकतानुसार उन्हें उप-वर्गीकृत कर सकते हैं। निश्चित रूप से, यदि आपके पास एक अनूठा इंटरफ़ेस है तो आपको व्यू क्लास को उपclass करना होगा और कस्टम ड्राइंग करना होगा, लेकिन आप आईबी में अपना इंटरफ़ेस भी डाल सकते हैं और फिर कक्षा को अपने कस्टम सबक्लास में स्विच करने के लिए आसानी से इंस्पेक्टर का उपयोग कर सकते हैं।

+3

आईबी आपको नहीं दिखाएगा कि आपकी कस्टम चीज़ कैसी दिखती है, इसलिए यह व्यर्थ है। – dontWatchMyProfile

+0

निश्चित रूप से, लेकिन यह बिल्कुल नहीं देख रहा है कि आपकी कस्टम चीजें कैसी दिखती हैं लेकिन फिर भी इसे दृश्य तरीके से बाहर रखने में सक्षम होने से यह पूरी तरह से प्रोग्रामेटिक रूप से करने से बेहतर है। यदि आप इसे प्रोग्रामेटिक रूप से करते हैं, तो आप यह नहीं देखते हैं कि आपके इंटरफ़ेस में कुछ भी * बिल्कुल * जैसा दिखता है। (और, यदि आपके पास एक कस्टम तत्व है जिसका आप अक्सर उपयोग करते हैं, तो आप इसके लिए आईबी पैलेट प्लगइन बना सकते हैं।) – mipadi

+1

कि आईबी पैलेट चीज़ दिलचस्प लगती है। हालांकि, यदि आपके पास ऐसे विचार हैं जो वास्तव में पारदर्शी हैं और व्यापक रूप से उपयोग करते हैं, और यहां तक ​​कि गतिशील रूप से उनके फ्रेम को समायोजित करते हैं, तो आप आईबी के साथ फंस गए हैं। – dontWatchMyProfile

4

ईमानदारी से मुझे लगता है कि यह सुविधा का एक स्पेक्ट्रम है। यदि आप कोड में सबकुछ लिखने में सहज महसूस कर रहे हैं तो इसके लिए जाएं। यदि आप अपनी परियोजना को अच्छी तरह से डिजाइन करते हैं तो यह नई खिड़कियां बनाने के समान काम के बारे में होना चाहिए, लेकिन मुझे पता है कि बहुत से लोग जीयूआई दुनिया के साथ सहज नहीं हैं, इसलिए निब/xibs अच्छी तरह से काम करते हैं।

मैं ईमानदारी से खुद को XIB का उपयोग आधार के आधार पर ढूंढता हूं और विशिष्ट रूप से इच्छित रूप प्राप्त करने के लिए उन्हें कोड के साथ संपादित करता हूं। व्यक्तिगत पसंद।

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

यहां सूची के लिए एक प्रश्न है। Xib का उपयोग करने के लिए प्रदर्शन हिट क्या है? मैंने सोचा कि वे एक प्लस थे क्योंकि जब तक आपको उनकी आवश्यकता नहीं होती तब तक उन्हें स्मृति में लोड नहीं किया जाता है। उस ने कहा, वह लोड समय लंबा है जो आपके प्रोग्राम को धीमा कर देगा। विचार?

+3

यदि आप प्रोग्रामेटिक इंटरफेस पर XIB का उपयोग करने के प्रदर्शन के बारे में चिंतित हैं, तो आपको इसे पढ़ना चाहिए: http://cocoawithlove.com/2010/03/load-from-nib-or-construct-views- in.html यह बात है कि हां, कुछ विशिष्ट मामलों में, इंटरफेस का प्रोग्रामेटिक निर्माण तेजी से होता है, लेकिन लगभग सभी मामलों में कोई प्रदर्शन दंड नहीं होता है। – mipadi

+0

मैं इसके साथ सहमत हूं। मैंने XIB का उपयोग करके भी परेशान नहीं किया है क्योंकि अन्य भाषाओं में मेरा पूरा अनुभव मुझे प्रोग्रामेटिक रूप से चीजों को बनाने में मदद करता है। जब मुझे कुछ खाली समय मिलता है तो मैं सीखूंगा कि इंटरफेस बिल्डर कैसे काम करता है लेकिन तब तक मैं जो करूँगा वह करूँगा। – MrHen

+0

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

3

कोड के बारे में मुझे एक चीज़ मिलती है जो नियंत्रण पर घटना कनेक्शन के लिए होती है, जब आप किसी विधि (संदेश) के उपयोग की खोज करते हैं तो उन्हें पता चलता है कि उन्हें कोड किया गया है और यदि आप आईबी में सेट किए गए हैं तो आप उन्हें नहीं ढूंढ पाएंगे ।

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

2

स्टार्ट अप चरण में यूआईसींट्रोलर (यूआईटीएबीबार नियंत्रक, यूएनएविगेशन कंट्रोलर इत्यादि) से निपटने के दौरान मैं बहुत समय बचाता हूं जहां सभी नेविगेशन सामग्री को जोड़ दिया जाता है।

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

सबसे अच्छा बात, मेरे दिमाग में, इसे संतुलित करना है, अगर आप खुद को "फ्रेम 3 पीएक्स -> संकलन -> आह बदलें।" दो पिक्सल और अधिक की जरूरत है -> परिवर्तन 2 पीएक्स - संकलन -> आह .. 1 और पीएक्स "आईबी में किया जा सकता है, आप गंभीरता से समय बर्बाद करना शुरू कर देंगे।

मैं ऊपर जैसा शुरू करता हूं, लेकिन बाद में मैं अक्सर कस्टम सामान के लिए XIB को फेंक देता हूं। यह चाल बार-बार कोड में कस्टम सामान के संस्करणों को कार्यान्वित करने के लिए घंटों तक नहीं बिताना है, लेकिन यह पता लगाएं कि यह कैसे होना चाहिए और कस्टम सामान एक बार कैसे करें :)

3

जब आपके एप्लिकेशन में कुछ प्रकार के "मानक" विचार होते हैं , एक्सआईबी के साथ जाओ। यदि आपको बाहरी सामग्री (एक्सएमएल ...) के आधार पर वास्तविक अनुकूलन की आवश्यकता है, तो इसे प्रोग्रामिक रूप से करें।

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

2

एक निब फ़ाइल की एक्सएमएल सामग्री बहुत जटिल है। यह परिवर्तन की समीक्षा करना या गिट जैसे संस्करण नियंत्रण प्रणाली के साथ विलय विवादों को ठीक करना बेहद मुश्किल बनाता है।

इंटरफ़ेस बिल्डर Bret Victor उसकी बात "Inventing on Principle" और अपने निबंध "Learnable Programming," एक अच्छा विचार है, लेकिन, परोक्ष एप्पल को चुनौती देता एक और भी बेहतर आईडीई बनाने के लिए।

ब्रेट विक्टर के सिद्धांत के आधार पर एक विचार: क्या होगा यदि मैं आईओएस सिम्युलेटर ऐप में "मूव टूल" का चयन कर सकता हूं जो मुझे मेरे ऐप में एक बटन ले जाने देता है और फिर फ्रेम कोड कार्यान्वयन में बदल जाता है (.m) फ़ाइल ? यह बहुत बेहतर होगा।

+2

एक्सकोड का प्रत्येक नया संस्करण इस स्थिति में सुधार करता है। आजकल संघर्ष से बचने में यह बहुत अच्छा है और एक्सएमएल निश्चित रूप से मानव पठनीय है, भले ही यह वास्तव में मानव लिखने योग्य न हो। –