IOS app Launch loading process (from Click icon to interface Display)

Source: Internet
Author: User
<span id="Label3"></p><p><p>To help colleagues solve the problem today, found that the cause of the program Bug is that colleagues on the start of the program and the attempt to load the process is not familiar. So when there is no problem with the local code, but the program is not always the time we want the result, we should think about it because we ignore the reason why we tried to load the Process. Let's use an example to briefly introduce a few of the methods that are common in the startup process. First we created an attempt to control through the Xib (called empty, do not ask me why it called this name, because I am too lazy, the mouse point is fast not to go to it), and created a UIView subclass (MyView), and the empty object is set to the window with the controller, An object of MyView is set to the main view of Empty. OK, Learn the above, we can write Code.</p></p><pre>-(BOOL) application: (uiapplication *) application didfinishlaunchingwithoptions: (nsdictionary *<span style="color: #000000;"><span style="color: #000000;">) launchoptions {NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Load Controller</span></span>empty* Test=[[empty alloc] initwithnibname:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Empty</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">bundle:nil]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">New Window</span></span>UIWindow *window=<span style="color: #000000;"><span style="color: #000000;">[[uiwindow alloc] Initwithframe:[uiscreen mainscreen].bounds]; Self.window</span></span>=<span style="color: #000000;"><span style="color: #000000;">window; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">to <span style="color: #008000;">set the created controller as the root controller</span></span>Self.window.rootviewcontroller=<span style="color: #000000;"><span style="color: #000000;">test; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">activates and displays the window</span></span><span style="color: #000000;"><span style="color: #000000;">[self.window makekeyandvisible]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">YES;}</span></span></pre><p><p>Since our application is not created directly from the storyboard, we have to set it up with the Controller. Before the application calls Didfinishlaunchingwithoptions: you will see if you can create the view controller through the storyboard, and if you can't find it, we'll need to create the window and the controller manually. Since we want to know the execution of each method, we need to add the Method's printing information to each METHOD. The empty View controller code is as Follows:</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">#import</span></span> <span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">MyView.h</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">#import</span></span> <span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">Empty.h</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@interface</span></span><span style="color: #000000;"><span style="color: #000000;">Empty ()</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@end</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@implementation</span></span><span style="color: #000000;"><span style="color: #000000;">Empty</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">when the program starts, it invokes the load method of each class, as the official says, whether or not the class will be loaded into the runtime, it will be called. </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">invoked whenever a class or category is added to the objective-c runtime;</span></span>+(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Load{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__);}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">This method will only be called once, before init. If a class creates 10 objects, then Init executes 10 times, But the method executes only once. </span></span>+(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Initialize{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__);}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">I'm Not going to tell you this, so familiar.</span></span>-<span style="color: #000000;"><span style="color: #000000;">(instancetype) Init{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">[super init];}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">whether it is</span></span>-(instancetype) initwithcoder: (nscoder *<span style="color: #000000;"><span style="color: #000000;">) Adecoder{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">[super initwithcoder:adecoder];}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">This method is called when loading from the nib</span></span>-(instancetype) initwithnibname: (nsstring *) nibnameornil bundle: (nsbundle *<span style="color: #000000;"><span style="color: #000000;">) Nibbundleornil{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>(self=<span style="color: #000000;"><span style="color: #000000;">[super Initwithnibname:nibnameornil Bundle:nibbundleornil]) { } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;">self <span style="color: #000000;">;}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Once the initialization is complete, load the view and note that the controller creation is done and the view is loaded, and the views are lazy and should be used with Caution. </span></span>-(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Loadview{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Loadview</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">); [super loadview]; UIView</span></span>*view=<span style="color: #000000;"><span style="color: #000000;">[[MyView alloc] init]; View.backgroundcolor</span></span>=<span style="color: #000000;"><span style="color: #000000;">[uicolor yellowcolor]; Self.view</span></span>=<span style="color: #000000;"><span style="color: #000000;">view; }</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">called when a constraint is triggered</span></span>-(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Updateviewconstraints{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__); [super updateviewconstraints]; }</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">called when the view has finished loading, and if the view is not destroyed and then re-displayed, it will only execute once</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Viewdidload{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__); [super viewdidload]; }</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">the <span style="color: #008000;">view is about to appear</span></span>-(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) viewdidappear: (BOOL) animated{[super viewdidappear:animated]; NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__);}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">the <span style="color: #008000;">view is about to appear</span></span>-(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) viewwillappear: (BOOL) animated{[super viewwillappear:animated]; NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__);}</span></span></pre><p><p>The above is the controller class, that said in the code is SAID. The following is the code in MYVIEW.</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">#import</span></span> <span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">MyView.h</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@implementation</span></span><span style="color: #000000;"><span style="color: #000000;">MyView</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Drawing</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) drawrect: (cgrect) Rect{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__);}</span></span>+(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Load{NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__);}</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">to set a layout for a child view the frame of each child control is typically here</span></span>-(<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Layoutsubviews{[super layoutsubviews]; NSLog (</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">%s</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, __func__);}</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@end</span></span></pre><p><p>After reading the code, let's take a look at the printing Information.</p></p><pre><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.123</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] +<span style="color: #000000;"><span style="color: #000000;">[Empty load]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.124</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] +<span style="color: #000000;"><span style="color: #000000;">[MyView load]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.309</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] -<span style="color: #000000;"><span style="color: #000000;">[appdelegate application:didfinishlaunchingwithoptions:]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.309</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] +<span style="color: #000000;"><span style="color: #000000;">[Empty initialize]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.309</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] -<span style="color: #000000;"><span style="color: #000000;">[Empty initwithnibname:bundle:]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.310</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span><span style="color: #000000;"><span style="color: #000000;">] Loadview</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.314</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] -<span style="color: #000000;"><span style="color: #000000;">[Empty viewdidload]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.314</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] -<span style="color: #000000;"><span style="color: #000000;">[Empty viewwillappear:]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.315</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] -<span style="color: #000000;"><span style="color: #000000;">[MyView layoutsubviews]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.315</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] -<span style="color: #000000;"><span style="color: #000000;">[MyView layoutsubviews]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.316</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>] -<span style="color: #000000;"><span style="color: #000000;">[MyView drawrect:]</span></span><span style="color: #800080;"><span style="color: #800080;"></span> -</span>-<span style="color: #800080;"><span style="color: #800080;">Geneva</span></span>-<span style="color: #800080;"><span style="color: #800080;"></span> +</span> <span style="color: #800080;"><span style="color: #800080;">xx</span></span>:<span style="color: #800080;"><span style="color: #800080;"></span> -</span>:<span style="color: #800080;"><span style="color: #800080;">00.350</span></span>runloop[<span style="color: #800080;"><span style="color: #800080;">19756</span></span>:<span style="color: #800080;"><span style="color: #800080;">1191521</span></span>]-[empty viewdidappear:]</pre><p><p>Please ignore the project name, because today originally wanted some runloop, alas ~ The world is difficult to material AH ~ ~ ~</p></p><p><p></p></p><p><p>IOS app Launch loading process (from Click icon to interface Display)</p></p></span>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.