iphone - आईफोन परीक्षण के लिए यूनिवर्सल आईफोन/आईपैड एप्लिकेशन डीबग संकलन त्रुटि




ios ipad (2)

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

इसके बजाय मैंने डिवाइस पर चलाने की कोशिश की और जैसे ही यह दौड़ना शुरू होता है मुझे निम्न त्रुटि मिलती है:

dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController
  Referenced from: /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/Test
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit in /var/mobile/Applications/9770ACFA-0B88-41D4-AF56-77B66B324640/Test.app/TEST

चूंकि ऐप को XIB का उपयोग करने के बजाय प्रोग्रामेटिक रूप से बनाया गया है, इसलिए मैंने main.m विधि में निम्न पंक्तियों का उपयोग करके 2 डिवाइस तर्कों को विभाजित किया है:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate_Pad");
}
else
{
    retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate_Phone");
}

उस बिंदु से वे विभिन्न ऐपडिलेगेट्स का उपयोग करते हैं और मैंने यह सुनिश्चित करने के लिए अपने हेडर की जांच की है कि UISplitView का उपयोग कभी भी नहीं किया जाता है और न ही फोन तर्क के माध्यम से आयात किया जाता है।

मैं इस त्रुटि से कैसे बचूं और क्या इस प्रोग्रामेटिक रूप से बनाए गए ऐप में सार्वभौमिक तर्क पथ को विभाजित करने का एक बेहतर तरीका है?


एक्सकोड 8.3, आईपैड 2 (गैर रेटिना), स्विफ्ट 3 कोड

मेरे लिए क्या मदद मिली थी:

  • एक्सकोड पुनरारंभ करें
  • एक 'उत्पाद -> स्वच्छ' शिफ्ट कमांड के करें
  • परियोजना का पुनर्निर्माण करें

मुझे बहुत ही समान त्रुटि हो रही थी और यह मुझे पागल कर रहा था! :-) घंटों के लिए खोज रहे हैं और इसे समझ नहीं सका ...

जैसा कि आपने कहा था, आईपैड सिम्युलेटर में चलते समय सबकुछ ठीक था, लेकिन आईफोन ओएस 3.1.2 के साथ आईफोन पर ऐप का परीक्षण करने का प्रयास करते समय यह शुरू नहीं होगा लेकिन निम्न त्रुटि संदेश से क्रैश होगा:

mi_cmd_stack_list_frames ढेर में पर्याप्त फ्रेम नहीं है

कोड की लगभग हर पंक्ति की जांच करके मुझे एहसास हुआ कि यूआईपीओपीओवर कंट्रोलर या यूआईएसप्लिट व्यू कंट्रोलर (पहले से ही फोर्क किए गए आईपैड-विशिष्ट कोड के अंदर) 3.2 वर्गों को आवंटित करने से समस्या उत्पन्न हो रही है।

तो यानी इसके बजाय:

infoPopover = [[UIPopoverController alloc] initWithContentViewController: infoNavController];

मैं लिखूंगा

infoPopover = [[NSClassFromString (@ "UIPopoverController") alloc] initWithContentViewController: infoNavController];

और यह मेरी समस्या हल हो गई! (डिबगिंग इतना कठिन हो सकता है अगर त्रुटि संदेश आपको कोई सुराग नहीं देता है कि बग संभवतः कहां मिल सकता है ...)





ios-universal-app