1、Info.plist和pch文件ios
1. Info.plist常見的設置windows
#ifdef DEBUG#define Log(...) NSLog(__VA_ARGS__)#else#define Log(...) /* */#endif
@property(nonatomic) NSInteger applicationIconBadgeNumber;
@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
3. iOS7中的狀態欄app
從iOS7開始,系統提供了2種管理狀態欄的方式編輯器
在iOS7中,默認狀況下,狀態欄都是由UIViewController管理的,UIViewController實現下列方法就能夠輕鬆管理狀態欄的可見性和樣式ide
- (UIStatusBarStyle)preferredStatusBarStyle; 函數
- (BOOL)prefersStatusBarHidden; oop
4. 利用UIApplication來管理狀態欄this
UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString:@"tel://10086"]];
[app openURL:[NSURL URLWithString:@"sms://10086"]];
[app openURL:[NSURL URLWithString:@"mailto://12345@qq.com"]];
[app openURL:[NSURL URLWithString:@"http://ios.itcast.cn"]];
(1)應用程序的生命週期事件(如程序啓動和關閉)
(2)系統事件(如來電)
(3)內存警告
(4)… …
2. UIApplication和delegate的關係
atom
argc、argv:直接傳遞給UIApplicationMain進行相關處理便可
principalClassName:指定應用程序類名(app的象徵),該類必須是UIApplication(或子類)。若是爲nil,則用UIApplication類做爲默認值
delegateClassName:指定應用程序的代理類,該類必須遵照UIApplicationDelegate協議
Figure 1-1 shows a simple interface. On the left, you can see the objects that make up this interface and understand how they are connected to each other.url
(圖1-1顯示了一個簡單的界面。在左邊,你能夠看到,彌補了這個接口,並瞭解它們是如何相互鏈接的對象。)
There are three major objects at work here:在這裏工做的三個主要目標:
A UIScreen object that identifies a physical screen connected to the device.
A UIWindow object that provides drawing support for the screen.
A set of UIView objects to perform the drawing. These objects are attached to the window and draw their contents when the window asks them to.
Figure 1-2 shows how these classes (and related important classes) are defined in UIKit.(圖1-2顯示了這些在UIKit中被定義類(以及相關的重要的類)。)
直接將view添加到UIWindow中,但並不會理會view對應的UIViewController
自動將rootViewController的view添加到UIWindow中,負責管理rootViewController的生命週期
讓當前UIWindow變成keyWindow(主窗口)
讓當前UIWindow變成keyWindow,並顯示出來
5. UIWindow的得到
在本應用中打開的UIWindow列表,這樣就能夠接觸應用中的任何一個UIView對象
(平時輸入文字彈出的鍵盤,就處在一個新的UIWindow中)
用來接收鍵盤以及非觸摸類的消息事件的UIWindow,並且程序中每一個時刻只能有一個UIWindow是keyWindow。若是某個UIWindow內部的文本框不能輸入文字,多是由於這個UIWindow不是keyWindow
得到某個UIView所在的UIWindow
6. IOS程序啓動的完整過程
根據上面的描述能夠總結出,IOS程序啓動的完整過程以下:
1.main函數
2.UIApplicationMain
* 建立UIApplication對象
* 建立UIApplication的delegate對象
3.delegate對象開始處理(監聽)系統事件(沒有storyboard)
* 程序啓動完畢的時候, 就會調用代理的application:didFinishLaunchingWithOptions:方法
* 在application:didFinishLaunchingWithOptions:中建立UIWindow
* 建立和設置UIWindow的rootViewController
* 顯示窗口
4.根據Info.plist得到最主要storyboard的文件名,加載最主要的storyboard(有storyboard)
其中,使用storyboard啓動用戶界面的狀況,蘋果官方文檔是這樣描述
* 建立UIWindow
* 建立和設置UIWindow的rootViewController
* 顯示窗口
翻譯:
主要的storyboard初始化你的應用程序的用戶界面主要的storyboard定義在應用程序的信息屬性列表文件中。若是主要的storyboard是在這個文件中聲明,那麼當你的應用程序的啓動,iOS將執行下列步驟: 1.實例化一個窗口給你 2.加載的主要的storyboard,並實例化它的初始視圖控制器。 3.賦予了新的視圖控制器給窗口的rootViewController的屬性,而後在屏幕上顯示窗口。