1. 程式人生 > >IOS:UIApplication sharedApplication詳細解釋

IOS:UIApplication sharedApplication詳細解釋

iPhone應用程式是由主函式main啟動,它負責呼叫UIApplicationMain函式,該函式的形式如下所示:
int UIApplicationMain (
int argc,
char *argv[],
NSString *principalClassName,
NSString *delegateClassName
);
那麼UIApplicationMain函式到底做了哪些事情呢?這個函式主要負責三件 事情:

1)從給定的類名初始化應用程式物件,也就是初始化UIApplication或者子類物件的一個例項,如果你在這裡給定的是nil,那麼 系統會預設UIApplication類,也就主要是這個類來控制以及協調應用程式的執行。在後續的工作中,你可以用靜態方法sharedApplication 來獲取應用程式的控制代碼。

2)從給定的應用程式委託類,初始化一個應用程式委託。並把該委託設定為應用程式的委託,這裡就有如果傳入引數為nil,會呼叫函式訪問 Info.plist檔案來尋找主nib檔案,獲取應用程式委託。

3)啟動主事件迴圈,並開始接收事件。

上面是UIApplicationMain函式的工作,接下來一個問題是應用程式檢視的顯示、訊息的控制怎麼辦?下面就是UIApplication(或 者子類)物件的職責,這個物件主要做下面幾件事:

1)負責處理到來的使用者事件,並分發事件訊息到應該處理該訊息的目標物件(sender, action)。
2)管理以及控制檢視,包括呈現、控制行為、當前顯示檢視等。
3)該物件有一個應用程式委託物件,當一些生命週期內重要事件(可以包括系統事件或者生命週期控制事件)發生時,應用程式通知該物件。例如,應用程式啟 動、記憶體不夠了或者應用程式結束等,讓這些事件發生時,應用程式委託去響應。

通 過上面的分析,可以知道UIApplication對開發者來說,是一個黑箱,它也可以是。因為所有的操作,都可以由它的委託來幫我們完成,它只需要在 後面維護一些不可更改的東西,如事件訊息分發和傳遞、給委託傳送事件處理請求等等,如,應用程式載入處理完畢,它會發送訊息給委託,然後委託可以在 applicationDidFinishLanching委託函式中去實現開發者想要的動作。利用XCODE在建立應用程式時,會預設實現一個應用程式 委託類。而對於載入的檢視,則有檢視相關的委託類來處理檢視載入過程的生命事件。下面說明委託主要可以辦哪些事情:
控制應用程式的行為

  • (void)applicationDidFinishLaunching:(UIApplication *)application
    應用程式啟動完畢。
  • (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
    當由於其它方法開啟應用程式(如URL指定或者連線),通知委託啟動完畢
  • (void)applicationWillTerminate:(UIApplication *)application
    通知委託,應用程式將在關閉 退出,請做一些清理工作。
  • (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
    通知委託,應用程式收到了為來自系統的記憶體不足警告。-(void)applicationSignificantTimeChange:(UIApplication *)application
    通知委託系統時間發生改變(主要是指時間屬性,而不是具體的時間值)
    開啟URL
  • (BOOL)application:(UIApplication )application handleOpenURL:(NSURL )url
    開啟指定的URL
    控制狀態列方位變化
    – application:willChangeStatusBarOrientation:duration:
    裝置方向將要發生改變
    – application:didChangeStatusBarOrientation:
    活動狀態改變
  • (void)applicationWillResignActive:(UIApplication *)application
    通知委託應用程式將進入非活動狀態,在此期間,應用程式不接收訊息或事件。-(void)applicationDidBecomeActive:(UIApplication *)application
    通知委託應用程式進入活動狀態,請恢復資料

1.設定icon上的數字圖示
//設定主介面icon上的數字圖示,在2.0中引進, 預設為0

[UIApplicationsharedApplication].applicationIconBadgeNumber = 4; 

2.設定搖動手勢的時候,是否支援redo,undo操作 //搖動手勢,是否支援redo undo操作。
//3.0以後引進,預設YES
[UIApplicationsharedApplication].applicationSupportsShakeToEdit =YES;
3.判斷程式執行狀態 //判斷程式執行狀態,在2.0以後引入
/*
UIApplicationStateActive,
UIApplicationStateInactive,
UIApplicationStateBackground
*/
if([UIApplicationsharedApplication].applicationState ==UIApplicationStateInactive){
NSLog(@”程式在執行狀態”);
}
4.阻止螢幕變暗進入休眠狀態 //阻止螢幕變暗,慎重使用,預設為no 2.0
[UIApplicationsharedApplication].idleTimerDisabled =YES;
慎重使用本功能,因為非常耗電。
5.顯示聯網狀態 //顯示聯網標記 2.0
[UIApplicationsharedApplication].networkActivityIndicatorVisible =YES;
6.在map上顯示一個地址 NSString* addressText [email protected]”1 Infinite Loop, Cupertino, CA 95014”;
// URL encode the spaces
addressText = [addressTextstringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString* urlText = [NSStringstringWithFormat:@”http://maps.google.com/maps?q=%@“, addressText];
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:urlText]];
7.傳送電子郵件 NSString *recipients [email protected]”mailto:[email protected][email protected],[email protected]&subject=Hello from California!”;
NSString *body [email protected]”&body=It is raining in sunny California!”;
NSString *email = [NSStringstringWithFormat:@”%@%@”, recipients, body];
email = [emailstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:email]];
8.打電話到一個號碼 // Call Google 411
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@”tel://8004664411”]];
9.傳送簡訊 // Text to Google SMS
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@”sms://466453”]];
10.開啟一個網址 // Lanuch any iPhone developers fav site
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@”http://itunesconnect.apple.com“]];

相關推薦

IOSUIApplication sharedApplication詳細解釋

iPhone應用程式是由主函式main啟動,它負責呼叫UIApplicationMain函式,該函式的形式如下所示: int UIApplicationMain ( int argc, char *argv[], NSString *princi

UIApplication sharedApplication詳細解釋-IOS

iPhone應用程式是由主函式main啟動,它負責呼叫UIApplicationMain函式,該函式的形式如下所示:  int UIApplicationMain (  int argc,  char *argv[],  NSString *principalClassName,  NSString *de

iOS中[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@""]]的使用

使用系統自帶功能,傳送簡訊、撥打電話、傳送郵件、開啟網站 // 呼叫自帶mail [[UIApplication sharedApplication] openURL:[NSURL URLWithSt

iOS [UIApplication sharedApplication] openURL等常用的方法使用例如打電話、定位等

1、打電話 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://電話號碼"]]; 2、發簡訊 [[UIApplication sharedApplication] openURL

iOS詳細的正則表達式

bject for one 常用 一個 .cn 想要 bbb 公式 1、簡介: 在項目中,正則的使用是很普遍的,例如登錄賬號和密碼(手機號、郵箱等)。用到的方法就是謂詞對象過濾:NSPredicate。 2、什麽是正則表達式:   正則表達式,又稱正規表示法,是

ios::sync_with_stdio(false) 詳細解釋

在競賽中,遇到大資料時,往往讀檔案成了程式執行速度的瓶頸,需要更快的讀取方式。相信幾乎所有的C++學習者都在cin機器緩慢的速度上栽過跟頭,於是從此以後發誓不用cin讀資料。還有人說Pascal的read語句的速度是C/C++中scanf比不上的,C++選手只能乾著急。難道C++真的低Pas

ios-設定狀態列樣式 [UIApplication sharedApplication].statusBarStyle

在info.plist檔案中新增一個屬性View controller-based status bar appearance,設定為No(不支援在檔案中設定狀態列樣式) 然後在AppDelegate中寫上[UIApplication sharedApplication].status

資料結構實驗之圖論四迷宮探索(超詳細解釋

Problem Description 有一個地下迷宮,它的通道都是直的,而通道所有交叉點(包括通道的端點)上都有一盞燈和一個開關;請問如何從某個起點開始在迷宮中點亮所有的燈並回到起點? Input 連續T組資料輸入,每組資料第一行給出三個正整數,分別表示地下迷宮的

iOS開發中使用[[UIApplication sharedApplication] openURL:]載入其它應用

轉載自:http://blog.csdn.net/hengshujiyi/article/details/21172127 在iOS開發中,經常需要呼叫其它App,如撥打電話、傳送郵件等。UIApplication:openURL:方法是實現這一目的的最簡單方法,該方法

Android中View和ViewGroup的詳細解釋

Android中View和ViewGroup的詳細解釋 1. 概述: Android系統中的所有UI類都是建立在View和ViewGroup這兩個類的基礎上的。所有View的子類成為”Widget”,所有ViewGroup的子類成為”Layout

時間格式yyyy-MM-dd HH:mm:ss,YYYY-MM-dd hh:mm:ss等,詳細解釋

看到示例程式碼展示的日期格式,不符合本地化習慣,檢視幫助文件,修改成常用的年月日格式,記錄供以後查詢; NSDate *now = [NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat

SSM:spring+springmvc+mybatis框架中的XML配置文件功能詳細解釋

con initial -m and 整理 .get 尺寸 internal 頁面 SSM:spring+springmvc+mybatis框架中的XML配置文件功能詳細解釋 2016-04-14 23:40 13030人閱讀 評論(2) 收藏 舉報

iOS仿寫探探App動畫

demo ron dem 布局實現 you image 轉場動畫 pan https 一、簡單介紹 探探動畫比較新穎,這也是它在眾多交友軟件中火熱的一個特色。實現這種動畫的方式可以有兩種方式實現: 1、使用轉場動畫實現 2、使用CollectionView自定義布局實現,

set_include_path詳細解釋(轉)

好處 name efi conn 方便 ooo pre def define 首先我們來看這個全局變量:__FILE__它表示文件的完整路徑(當然包括文件名在內)也就是說它根據你文件所在的目錄不同,有著不同的值;當然,當它用在包行文件中的時候,它的值是包含的路徑;然

Sed命令的使用詳細解釋

lin 格式 next printing 操作 模式匹配 oot att mman Sed命令的使用詳細解釋 一:sed命令的簡介 sed是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用s

iOS繪圖

需要 tar lock cnblogs 效果 pre cgp 技術 etop 1、UIBezierPath(貝塞爾曲線)   1-1)、在重寫 drawRect: 方法裏使用     使用不難,看 UIBezierPath.h 基本都會用,值得註意的是,顏色設置如下: [

spring 中註解的詳細解釋之@Responsebody與@RequestBody

可用 gif com .com profile 而是 ping get orm 1、@responseBoby @Responsebody與@RequestBody 一、預備知識:@RequestMapping RequestMapping是一個用來處理請求地

iOSCoreText的常用語法

ear 單位 [] 翻轉 1.2 iphone 書寫 attach direct CoreText的關鍵語法 一、坐標旋轉 -(void)drawRect:(CGRect)rect { //獲取上下文 CGContextRef ctx = UIGra

iOSUITableView相關

lar 對齊 options bject 技巧 pear uitable col rec UITableView用得較多,遇到的情況也較多,單獨記錄一篇。 一、零散的技巧 二、取cell 三、導航欄、TableView常見問題相關 一、零散的技巧 1、 cell的選

貪吃蛇大作戰單人版完整代碼以及詳細解釋

route 一個 next 與此同時 con cti black cor 判斷 貪吃蛇總結: 1. 創建WPF應用程序 2. 添加Canvas標簽。Name=back; 3. 添加loaded事件 4. 在loaded事件中創建蛇(設置蛇的位置,大小,顏色)