तो, जैसा कि आपने बताया है, main()
main.m
में कार्य प्रारंभ बिंदु है, जो UIApplicationMain()
पर कॉल करता है। ,
- argc,
- * argv []
- * principalClassName
- * delegateClassName: आप डॉक्स चेक करते हैं, तो आप देखेंगे कि
UIApplicationMain
चार तर्क लेता है।
उनमें से पहले दो तर्क संख्या और परिवर्तनीय सूची main()
से उत्तीर्ण की गई हैं। लेकिन तीसरे और चौथे तर्क एनएसएसटींग्स के पॉइंटर्स हैं। तीसरा तर्क निर्दिष्ट करता है कि कौन सा वर्ग UIApplication
होना चाहिए। जब तक आप UIApplication
उपclassing का इरादा नहीं रखते हैं, तो आप तीसरे तर्क के लिए nil
निर्दिष्ट करते हैं।चौथा तर्क निर्दिष्ट करता है कि कौन सी कक्षा यूआईपीप्लिकेशंस के प्रतिनिधि वर्ग होनी चाहिए, जो UIApplicationDelegate
प्रोटोकॉल में निर्दिष्ट किसी भी चीज़ का जवाब देगी। तुम्हें पता है, सीधे इस के साथ गंदगी के लिए के रूप में यह Xcode टेम्पलेट्स के सभी में शामिल है की जरूरत नहीं है:
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
मत NSStringFromClass([AppDelegate class]))
बिट आप फेंक देते हैं। चौथे तर्क को निर्दिष्ट करने का यह एक शानदार तरीका है ताकि सही प्रतिनिधि को बुलाया जाए, बाद में आपको AppDelegate.m
का नाम बदलना चाहिए।
UIApplication
main event loop शुरू करता है और -application:didFinishLaunchingWithOptions:
पर कॉल करता है, जो इसके प्रतिनिधि को संभालने के तरीकों में से एक है। AppDelegate.m
पर एक नज़र डालें, और आपको इस विधि के लिए कुछ टेम्पलेट कोड मिलेगा। यह वह जगह है जहां आप अनुकूलित करना आरंभ, बातें जगह में होने की जरूरत है कि इससे पहले कि UIWindow
और UIView
के अन्य उदाहरण बनाया हो बनाने कर सकते हैं:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
तो, अब आवेदन खिड़की और रूट दृश्य नियंत्रक परिभाषित कर रहे हैं, और अनुप्रयोग बंद है और चल रहा है।
यह सब, और बहुत-सी, उत्कृष्ट यहां समझाया गया है: http://oleb.net/blog/2012/02/app-launch-sequence-ios-revisited/
FYI करें, 'UIApplicationMain()' कभी नहीं देता है। ऐप को 'निकास() 'पर कॉल के माध्यम से समाप्त कर दिया जाता है। तो यूआईपीप्लिकेशंसमेन (argc, argv, nil, nil) के बाद आपने जो कुछ भी रखा है, '' मुख्य() 'में * कभी * निष्पादित नहीं होगा। कभी नहीं। –
उह। @ डेव अगर यह सच है, वह वास्तव में मुझे बाहर grosses। यह बेसिक के दिनों की तरह वापस है जब हम सिर्फ एक GOSUB के बीच में बंद करो! –