प्रयास करें:
int main(int argc, char *argv[])
{
NSLog(@"Step 0");
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Step 1");
int retVal = UIApplicationMain(argc, argv, nil, nil);
NSLog(@"Step 2");
[pool release];
NSLog(@"Step 3");
return retVal;
}
हो सकता है कि पूल की रिहाई आगे लॉगिंग जिस स्थिति में आप चरण 2 प्राप्त हैं, लेकिन कदम नहीं रोक रहा है 3.
तो चरण 2 'isn टी मुद्रित नहीं किया जा रहा है, तो यह लगभग निश्चित रूप से UIAplplicationMain के साथ कुछ गलत है - ऐसा कोई मौका है कि यह वापस नहीं लौटाता है इसलिए एनएसएलओजी स्टेटमेंट्स (चरण 1.1, चरण 1.2, ...) को इसके अंदर विभिन्न बिंदुओं पर रखें और अंतिम संदेश लॉग इन करने के लिए चलाएं ।
ड्रिलिंग रखें (चरण 1.7.1, 1.7.2, .... 1.7.6.3.2, ...) - अंततः, आप सटीक रेखा को ट्रैक करेंगे (हालांकि कॉल पदानुक्रम में गहरी) जब लॉग संदेश लॉग इन होना बंद कर देते हैं और वह लाइन आपका अपराधी होगा (या तो सामान्य रूप से लौटने के बिना लॉगिंग या बाहर निकलने "बंद कर दिया जाएगा)।
आगे टुकड़ा मैं वेब पर पाया:
=====
जब आप इस लाइन का उपयोग करें:
int retVal = UIApplicationMain(argc, argv, @"MyApp", @"MyApp");
पहले MyApp अपने मुख्य अनुप्रयोग प्रतिनिधि वर्ग है। दूसरा वह वर्ग है जहां स्प्रिंगबार्ड स्पर्श अधिसूचनाएं भेजता है।
इसके अलावा, यदि आप एसडीके का उपयोग कर रहे हैं, और जानकारी में परिभाषित एक मुख्य निब है।कृपया, आप कॉल को
int retVal = UIApplicationMain(argc, argv, nil, nil);
के रूप में सभी को कवर किया जाएगा जब आप अपनी xibs बनाते हैं।
=====
अब मैं iPhone विकास के बारे में पर्याप्त (विशेष रूप से xibs) पता करने के लिए नहीं पता है कि कि पिछले सा भी साधन (या आप इसे सेट करता है, तो कर दिया है सही ढंग से), लेकिन यह की तरह लगता है संकलन का एक और चरण।
हालांकि, पढ़ने से मेरा पहला विचार यह है कि स्प्रिंगबोर्ड आपके प्रतिनिधि वर्ग को कॉल करेगा जब बटन आपको कुछ करने के लिए कहने के लिए दबाए जाते हैं (जैसे कि चुपके से बंद करें)। यदि यह आपको नहीं पूछ सकता है (यानी, कोई प्रतिनिधि नहीं), तो संभवत: [UIApplication _terminateWithStatus:]
के साथ फिट होने पर इसे बंद करने के अपने अधिकारों में यह संभवतः है।
विंडोज़ दुनिया में, आप शायद मुख्य विंडो पर एक छोड़ संदेश भेज देंगे, लेकिन जैसा कि मैंने कहा है, आईफोन विकास अलग हो सकता है।
फिर भी, यह जांच करने का एक तरीका है। यदि आप एक प्रदान करते हैं तो मुझे एक प्रतिनिधि को क्या कॉल किए गए थे, यह देखने में दिलचस्पी होगी।
@implementation MyApp
- (void) applicationDidFinishLaunching:(id)unused {
rect = [ UIHardware fullScreenApplicationContentRect ];
rect.origin.x = 0.0f;
rect.origin.y = 0.0f;
window = [ [ UIWindow alloc ] initWithContentRect: rect ];
[ window makeKeyAndVisible ];
view = [ [ MyAppView alloc ] initWithFrame: rect ];
[ window setContentView: view ];
}
- (void) dealloc {
[ window release ];
[ view release ];
[ super dealloc ];
}
तो शायद dealloc()
साथ एक प्रतिनिधि यह main()
वापस करने के लिए बाहर निकलने के लिए हो रही करने के लिए रहस्य है: कोड स्निपेट के साथ शामिल ऊपर इस किया था। आप उसे शॉट क्यों नहीं देते? यह आपको अपने लक्ष्य के करीब ले जा सकता है भले ही यह मूल समस्या का समाधान न करे।
अपडेट: मुझे यह रिपोर्ट करने में प्रसन्नता हो रही है कि ऐप्पल ने UIAplplicationMain() के लिए आधिकारिक दस्तावेज़ीकरण को संशोधित किया और मेरी बग बंद कर दी। प्रलेखन में अब निम्न शामिल हैं: भले ही एक पूर्णांक रिटर्न प्रकार निर्दिष्ट किया गया हो, यह फ़ंक्शन कभी वापस नहीं आता है। जब उपयोगकर्ता होम बटन दबाकर एक आईफोन एप्लिकेशन को समाप्त करते हैं, तो एप्लिकेशन शून्य से तर्क के साथ निकास सिस्टम फ़ंक्शन को कॉल करके तत्काल बाहर निकलता है। " –