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

शायद ऐप्पल इस तरह की आलोचना के लायक नहीं है - सच्चाई यह है कि, बाकी सब कुछ, अच्छी तरह से, या लगभग सब कुछ, अपने सबसे अच्छे रूप में है। ITunes और Apple डेवलपर पोर्टल को छोड़कर (जो हाल के वर्षों में, फिर भी, बहुत बेहतर हो गया है) प्रौद्योगिकी आपको यह ध्यान केंद्रित करने की अनुमति देती है कि आप क्या करते हैं, और IE में यह कैसे दिखेगा, इस पर ध्यान केंद्रित नहीं करता है।
पहले तो मैंने आईबी का उपयोग बिल्कुल नहीं किया, यह मुझे बहुत ही टेढ़ा लग रहा था और अन्य दृश्य संपादकों के बाद मुझे बहुत बुरा लगा। यहां तक कि मैक्रोमेडिया ड्रीमव्यूअर एमएक्स, आईएमएचओ, को यूआई के लिए WYSIWYG संपादकों कहा जाने का एक बेहतर मौका था। लेकिन कई साल बीत गए, और एक अद्भुत बात सामने आई - ऑटोलॉयट - जो कोड में लागू करने के लिए विनाशकारी रूप से असुविधाजनक है। इस कोड में थोड़ा भाग्य:
UIImageView *iv = [[UIImageView alloc] initWithImage:image]; UIView *renderView = [[UIView alloc] initWithFrame:iv.bounds]; NSInteger completedDistance = renderView.bounds.size.width * percentsCompleted; UIView *progressView = [[UIView alloc] initWithFrame:CGRectMake(completedDistance, 0, renderView.bounds.size.width, renderView.bounds.size.height)]; progressView.backgroundColor = RGB_UICOLOR(255, 255, 255, 0.8); renderView.clipsToBounds = YES; [renderView addSubview:iv]; [renderView addSubview:progressView];
लेकिन तरह कोड
NSMutableArray *constraints = [@[] mutableCopy]; [constraints addObject:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.parentView attribute:NSLayoutAttributeWidth multiplier:1 constant:0]]; [constraints addObject:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.parentView attribute:NSLayoutAttributeHeight multiplier:1 constant:0]]; [constraints addObject:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.parentView attribute:NSLayoutAttributeTop multiplier:1 constant:0]]; [constraints addObject:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.parentView attribute:NSLayoutAttributeLeading multiplier:1 constant:0]]; [self.parentView addConstraints:constraints];
एक डेवलपर की आत्मा को निराशा और अवसाद में डुबो देता है। IB में, शुरुआत के लिए ऑटोलेयूट सेटिंग भी चीनी है, लेकिन जैसे-जैसे समय बीतता जाता है, आप अपने आप को भयानक जाम पर ध्यान न देने के लिए मजबूर करना शुरू कर देते हैं, छोटे दोषों को तब तक सहन करते हैं ... जब तक आपके पास टैंट्रम नहीं होता है और वर्षों तक बिना सोचे-समझे ब्लंडर की संख्या, सभी उचित से अधिक नहीं होती है सीमा। लेकिन कोई विकल्प नहीं है, प्रारूप अनिर्धारित है, कोई तृतीय-पक्ष उपकरण नहीं होगा! यहाँ मेरी छोटी काली सूची है:
- कम से कम 200% का पैमाना दें! यदि दृश्य पर बहुत सारे छोटे तत्व हैं, तो आप एक माउस के साथ सूक्ष्म विचारों पर पागल प्रहार कर सकते हैं और एक लंबी सूची से चुन सकते हैं - यह भी एक त्वरित कार्य नहीं है;
- नेत्रहीन आप दृश्य के सभी गुणों से दूर सेट कर सकते हैं, भले ही 30%। मुझे बोरलैंड डेल्फी और इसके जादुई ऑब्जेक्ट इंस्पेक्टर की याद आती है, जिसमें आप लगभग कोई भी दृश्य बना सकते हैं, और यह रनटाइम में लगभग समान था। IB में, दृश्य गंदगी की तरह दिखते हैं, या बल्कि, पिकासो के हाथ के सार वर्गों का एक सेट। लेकिन वहाँ एक झंडा छिपा हुआ है (हर जगह, हर जगह कार्यक्रम के आधार पर इसे उजागर किया जाता है!) और स्ट्रेचिंग (मुझे पता भी नहीं है कि यह क्या है);
- पहले, मैंने टेबल हेडर के रूप में एक दृश्य (UIView) को रोल किया, अब मुझे UITableViewHeaderFooterView की आवश्यकता है। ठीक है, मैं उसे जिब तक कहां खींचूं? ठीक है, कहीं से भी, अपने हाथों से लिखो! और अगर आप टेबल को उविवे-हू को पर्ची करने का निर्णय लेते हैं, तो मैं नाराज और दुर्घटनाग्रस्त हो जाऊंगा;
- कोई समझदार XML नहीं है जो IB उत्पन्न करता है। मैन्युअल रूप से इसे सही या पकड़ना असंभव है। आप शुरू करते हैं, भगवान ने मुझे माफ कर दिया, एंड्रॉइड डेवलपर्स से ईर्ष्या करने के लिए - उनके पास एक बहुत ही सुंदर दृश्य संपादक है, लेकिन अगर कुछ होता है, तो पेन से लिखें - कोई भी नाराज नहीं होगा!
- दृश्य वर्ग को बदलने के बाद, इसका "आईबी-सुपर" नहीं बदलता है, जिससे आपके आवेदन और पूरे एक्सकोड में ग्लिट्स और क्रैश होते हैं। मान लीजिए कि आप आधे घंटे के लिए कई सबव्यू और निर्माणों के साथ एक यूआईटेबल व्यूसेल बनाते हैं, और अचानक आपको एहसास होता है कि आपको एक कलेक्शन व्यू की जरूरत है और, तदनुसार, इसकी सेल। केवल एक ही रास्ता है - जब तक आपने महत्वपूर्ण ऊर्जा की एक अपूरणीय आपूर्ति खर्च नहीं की है, तब तक xib को हटा दें और इसे खरोंच से पुनः बनाएँ। यह एकमात्र तरीका है जब Apple आपके आवेदन के प्रदर्शन की गारंटी दे सकता है;
- स्टोरीबोर्ड पर सुसंगत सर्वोत्तम प्रथाएं कहां हैं, खासकर यदि एप्लिकेशन नोटबुक या कैलकुलेटर नहीं है? जब आप एक iPad पर एक एप्लिकेशन को पोर्ट करने की कोशिश करते हैं जो एक भारतीय या हमवतन है, स्टोरीबोर्ड में विशेष रूप से विकसित भारतीय संस्कृति के बारे में भावुक, आप खूनी आँसू के साथ रोते हैं। टेबल सेल को स्टोरीबोर्ड, Xibs और केवल Xibs में बनाने से मना किया जाना चाहिए! सिस्टम को मूर्ख से कम से कम सुरक्षा होनी चाहिए;
इतना ही नहीं, हमने हाल ही में गधे में एक नया दर्द जोड़ा:
- पिछले सभी पुनर्जन्मों से सबसे बड़ा आईबी इंटरफ़ेस (सॉरी टैफोलॉजी)! बाधाएं अक्सर अग्रणी स्थान होने का दिखावा करती हैं (जाहिर है, इस तरह की मछली अपने स्वयं के जिब में)। यह समझने का एकमात्र तरीका है कि सहायक संपादक की खिड़की को थोड़ा खोलना क्या है, लेकिन!
- उसी समय, हमारा कैनवास आसानी से और बाईं ओर छोड़ना शुरू कर देता है!
- आईओएस 6 की रिहाई के बाद से पारित होने वाले वर्ष में, हर कोई पहले से ही इस तथ्य का आदी है कि आईबी स्वयं तार्किक अखंडता के लिए सभी अनावश्यक निर्माणों को वितरित करता है, और यहां यह xib संकलन के दौरान इसे करने के लिए चूक करता है! इसलिए यह अनुमान लगाना असंभव है कि केवल चौड़ाई का परिचय किस ओर ले जाएगा। मैं आपको सलाह देता हूं कि "गायब गुम बाधाओं को" कमांड का उपयोग करें और पुराने तरीके से टाइप करें।
Apple के क्रेडिट के लिए, प्रत्येक छींक माउस से बाधाओं को दूर करना संभव था, लेकिन यह मुझे xCode 4 में 4 बार नर्वस ब्रेकडाउन के लिए लाया, और मेरे साथी के दोस्त की भी दिल का दौरा पड़ने से मृत्यु हो गई।
जिन लोगों ने हाल ही में iOS की खोज की, वे "खत्म!" के एक कोरस में गाते हैं, पवित्र रूप से ऐप्पल और स्टीव जॉब्स के आइकन पर विश्वास करते हैं। जिस पर मुझे आपत्ति है: "उन्होंने इसे पूरा नहीं किया!", उनके पास हमेशा एक दर्जन से अधिक महत्वपूर्ण चीजें होती हैं। वास्तव में महत्वपूर्ण, सुंदर चीजें,
लेकिन Apple - हम हर दिन आईबी से निपटते हैं, हम पर दया करते हैं, साधारण नश्वर डेवलपर्स!
बिदाई में, मैं एक दिलचस्प चुनाव की पेशकश करना चाहता हूं: