स्टोरीबोर्ड और एआरसी के बिना Xcode


116

मैंने नया xcode-5 डाउनलोड किया है और बस इसका उपयोग करना शुरू कर दिया है।

हम सीधे स्टोरीबोर्ड और एआरसी सहित एप्लिकेशन बना सकते हैं, यह पहले के संस्करणों की तरह विकल्प नहीं पूछ रहा है।

तो, मेरा सवाल यह है कि हम ARC और स्टोरीबोर्ड के बिना xcode5 का उपयोग कैसे कर सकते हैं। हमें स्टोरीबोर्ड फ़ाइल को मैन्युअल रूप से निकालना होगा? या कोई अन्य विकल्प है।


3
कोई भी वास्तव में इसका जवाब नहीं दे सकता है, लेकिन मुझे लगता है कि ऐप्पल ने ऐसा किया क्योंकि स्टोरीबोर्ड और एआरसी दोनों ही Xcode के साथ या ऑब्जेक्टिव-सी में ऐप विकसित करने में भविष्य हैं। चूंकि Xcode 5 अभी भी एक बीटा है, इसलिए हो सकता है कि वे इस साल के अंत में इसके लिए समर्थन जोड़ दें लेकिन मुझे लगता है कि ऐसा नहीं होने वाला है।
एचएस

6
स्टोरीबोर्ड फ़ाइल को मैन्युअल रूप से निकालें, और -fobjc-arcप्रोजेक्ट सेटिंग्स में संकलक ध्वज को हटा दें ।

19
मुख्य रूप से प्रोग्रामर द्वारा उपयोग किए जाने वाले उपकरणों के बारे में प्रश्न विषय पर बहुत अधिक हैं , बशर्ते कि वे किसी चीज की 'सर्वश्रेष्ठ' या 'खरीदारी' की सिफारिशों के लिए नहीं पूछें। मैंने इसके अनुसार इसे फिर से खोल दिया है।
टिम पोस्ट

1
लेकिन ऐसा करने के लिए यह उचित जगह नहीं है। ऐसा समझ लो।
MZimmerman6

3
NDA के अंतर्गत इसे बनाने वाली एकमात्र चीज़ "Xcode 5" शब्द है। वास्तव में वर्णित कुछ भी Xcode के पिछले संस्करणों पर किया जा सकता है इसलिए तकनीकी रूप से यह विषय चर्चा के लिए स्वतंत्र है।
एटोमरॉट सेप

जवाबों:


150

किसी रिक्त एप्लिकेशन के साथ कोई प्रोजेक्ट बनाएं और कोई भी व्यू कॉन्ट्रोलर जोड़ें (मैंने यहां TestViewController जोड़ा)

   - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
 {
   self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
   // Override point for customization after application launch.
   TestViewController *test = [[TestViewController alloc]     initWithNibName:@"TestViewController" bundle:nil];
   UINavigationController *nav = [[UINavigationController alloc]  initWithRootViewController:test];
   self.window.rootViewController = nav;
   [self.window makeKeyAndVisible];
   return YES;
 }

रिमूव एआरसी के लिए कदम

1) का निर्माण सेटिंग सेट में स्वत: संदर्भ गिनती करने के लिए नहीं

////////////////////////////////////////////////// /////////////////////////समाप्त//////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////////

आप पहले से ही साथ आवेदन बनाया है, तो स्टोरीबोर्ड और एआरसी तो

REMOVE STORY BOARD के लिए STEPS

1) अपने प्रोजेक्ट से Main.storyboard फ़ाइल निकालें ।

2) अपने कंट्रोलर के लिए xib के साथ नई फाइल्स जोड़ें, अगर यह बिल्ड फेज में संकलित स्रोतों में नहीं जोड़ा गया है तो मैन्युअल रूप से वहां जोड़ें।

3) प्लिस्ट से मुख्य स्टोरीबोर्ड फ़ाइल आधार नाम निकालें ।

4) बदलें appdelegate didFinishLaunchingWithOptions फ़ाइल और जोड़ें:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;

[self.window makeKeyAndVisible];

बिलकुल इसके जैसा :

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;

     // Override point for customization after application launch.

     TestViewController *test = [[TestViewController alloc]     initWithNibName:@"TestViewController" bundle:nil];
     UINavigationController *nav = [[UINavigationController alloc]  initWithRootViewController:test];
     self.window.rootViewController = nav;
     [self.window makeKeyAndVisible];

     return YES;
}


अब, ऊपर के उदाहरण में आपको मेमोरी मैनेजमेंट को मैन्युअल रूप से प्रबंधित करना होगा, जैसे,

 self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

 [test release]; 

रिमूव एआरसी के लिए कदम

1) का निर्माण सेटिंग सेट में स्वत: संदर्भ गिनती करने के लिए नहीं


7
क्या कोई "खाली प्रोजेक्ट" विकल्प नहीं है? मुझे नहीं लगता कि मैं स्टोरीबोर्ड का उपयोग करना शुरू करूंगा।
सुल्तान

1
अपने लक्ष्य की "मुख्य इंटरफ़ेस" सेटिंग को अपनी नई जड़ <दृश्य नियंत्रक> में बदलना सुनिश्चित करें।
पॉल ब्रैडी

आप सही हैं @ सुल्तान हम इसे खाली परियोजना द्वारा कर सकते हैं, लेकिन ये बदलाव हैं अगर मैं पहले से ही देखने के आधार पर आवेदन करता हूं। (हमें appDelegate फ़ाइल से मैन्युअल रूप से कुछ स्टोरीबोर्ड कोड को निकालना होगा) जबकि खाली आवेदन में हमें इसमें नया कोड जोड़ना होगा :)
PJR

मुझे एक स्क्रिप्ट मिली, जो स्टोरीबोर्ड को हटाने का विकल्प जोड़ेगी: stackoverflow.com/a/19792955/329928
क्रिस लेवा

UINavigationController क्यों नहीं है * ऑटोरिल्ड नहीं है? और हमें [UIWindow आबंटन] में _विंडो का उपयोग करना चाहिए?
हरिसज़मैन

44

स्टोरीबोर्ड फ़ाइल को हटाने के बजाय, आप खाली एप्लिकेशन टेम्पलेट के साथ एक नई परियोजना बना सकते हैं। ताकि आप स्टोरीबोर्ड फ़ाइल निर्माण से बच सकें।

स्टोरीबोर्ड को छोड़ने के लिए निम्नलिखित चरणों का उपयोग करें: यहां छवि विवरण दर्ज करें

  1. खाली एप्लिकेशन टेम्पलेट के साथ एक नया प्रोजेक्ट बनाएं।
  2. एक नया ViewController जोड़े (उदाहरण: LoginViewController)
  3. नीचे बताए अनुसार फ़ाइल didFinishLaunchingWithOptionsमें बदलें AppDelegate.m

में बदलो:

#import "LoginViewController.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    UINavigationController *navigationController = [[UINavigationController alloc]  initWithRootViewController:loginVC];

    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];

    return YES;
}

एआरसी निकालें: सेटिंग पर जाएं -> उद्देश्य-सी स्वचालित संदर्भ गणना -> सं


1
वाह! स्वीकृत उत्तर की तुलना में एक आकर्षण और बहुत सरल काम करता है। मैं तो बस बदलने के लिए सुनिश्चित हो करना पड़ा सभी के लिए संदर्भ के LoginViewControllerअपने खुद के नियंत्रक के नाम से मेल करने के लिए।
जॉन्स

11

नया प्रोजेक्ट बनाएं

[नई परियोजना बनाएँ]!

जानकारी में मुख्य स्टोरीबोर्ड फ़ाइल आधार नाम को हटा दें

// जानकारी में मुख्य स्टोरीबोर्ड फ़ाइल आधार नाम को हटा दें

इस कोड को appdelegate में जोड़ें

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    UINavigationController *navigationController = [[UINavigationController alloc]  initWithRootViewController:loginVC];

    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];

    return YES;
}

फिर अपने स्टोरीबोर्ड को स्वचालित रूप से हटा दें।

कृपया इसे आज़माएं ... सफलतापूर्वक निष्पादित किया गया। धन्यवाद


5

शॉर्टकॉट: आई प्रेफर

Storycode और ARC के बिना xcode4 में प्रोजेक्ट बनाएं और फिर xcode5 में उस प्रोजेक्ट को खोलें।


1
सिर्फ इसके लिए Xcode के पुराने संस्करण को रखना इसके लायक नहीं है। मैं इसके बजाय एक नया प्रोजेक्ट बनाऊंगा, स्टोरीबोर्ड सामान से छुटकारा पाऊंगा, ऐपडेलगेट में UIWindow इंस्टेंटेशन जोड़ूंगा और इसे बाद में टेम्पलेट प्रोजेक्ट के रूप में सहेजूंगा।
kervich

3

जब आप एक नया प्रोजेक्ट बनाते हैं तो Xcode 4 में "स्टोरीबोर्ड का उपयोग करें" चेकबॉक्स होता था। पुराने Xcode 4 एप्लिकेशन टेम्प्लेट (XML फ़ाइलें) को पकड़ना और उन्हें Xcode 5 में बदलना संभव है। इस तरह, आपको पुराने टेम्प्लेट वापस मिल जाते हैं जो आपको चुनते हैं कि आप स्टोरीबोर्ड चाहते हैं या नहीं।


मैंने एक स्क्रिप्ट लिखी है जो आपके लिए वह सब काम करती है: https://github.com/jfahrenkrug/Xcode4templates


स्क्रिप्ट चलाने के बाद, आपके पास "नया प्रोजेक्ट" स्क्रीन में "Xcode 4" अनुभाग होगा:

यहां छवि विवरण दर्ज करें

और फिर - काश! - आपको अपने प्रिय विकल्प वापस मिलेंगे:

यहां छवि विवरण दर्ज करें

इस स्क्रिप्ट का उपयोग करने के लिए आपको http://developer.apple.com/ios से Xcode 4 .app बंडल की एक प्रति की आवश्यकता होगी ।


1
हालाँकि, वे टेम्पलेट पुराने हैं और उपलब्ध सभी नए परिवर्तनों का लाभ नहीं उठाते हैं, जैसे -registerClass: forCellReuseIdentifier:।
महबौद

@mahboudz यह सच है। आपको यह मोड़ने की जरूरत है कि यदि वह कार्यक्षमता आपके लिए महत्वपूर्ण है। निश्चित रूप से मुझे उम्मीद है कि ऐप्पल भविष्य में Xcode की रिलीज़ में स्टोरीबोर्ड से ऑप्ट-आउट करने का विकल्प वापस लाएगा।
जोहान्स फारेनक्रग

1
मुझे आशा है। आप की तरह, मैं छोटे ऐप में स्टोरीबोर्ड का उपयोग करता हूं, ज्यादातर त्वरित टेबल व्यू विकास के कारण, लेकिन बड़े ऐप में, स्टोरीबोर्ड एक प्रमुख प्रमुख दर्द है। चारों ओर स्क्रॉल करने से, सेगमेंट आईडी को याद रखने के लिए (उन्हें स्टोरीबोर्ड्स और स्रोत फ़ाइलों के बीच #defines या const NSString * का उपयोग करने का एक तरीका जोड़ने के लिए मिला है), git संघर्ष रिज़ॉल्यूशन करने के लिए, और अधिक, स्टोरीबोर्ड बस सभी नहीं हैं सब समाप्त करो।
महबूदज

उन V / A तीर हालांकि।
जॉन रिसेल्वेटो

1
@ जोहानिसिलवेटो आप सही हैं :) अप्रिय तीर अब चला गया हैं :)
जोहान्स फारेनक्रग

0

मेरे पास एक टिप है:

  1. पहला: मैं XCode 4.6 द्वारा अपना प्रोजेक्ट बनाता हूं (क्योंकि यह संस्करण XCode 5 के सबसे करीब है)।
    • बेशक कि XCode 4.6 के साथ, आप ARC, स्टोरीबोर्ड का उपयोग या उपयोग नहीं कर सकते।
  2. दूसरा: इसके बाद मैं अपना प्रोजेक्ट XCode 5 के साथ खोलूंगा। => मुझे लगता है कि Xcode 5 यह समझ लेगा कि परियोजना nonARC का उपयोग करती है, और निश्चित रूप से, स्टोरीबोर्ड नहीं है।

मुझे उम्मीद है कि आपका प्रोजेक्ट काम करेगा! : डी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.