1 - UIApplication

**1.2UIApplication的作用: **
1.設置應用程序的圖標.
2.設置聯(lián)網(wǎng)的狀態(tài).
3.設置狀態(tài)欄.
4.打電話
5.發(fā)短信
6.應用之間跳轉(zhuǎn).
1.2.1 UIApplication常見屬性

1.2 .2 狀態(tài)欄與UIApplication

1.2.3利用UIApplication管理狀態(tài)欄

**1.2.4 .openURL: **

2 - 如何實現(xiàn)openURL
2.1首先, 我們在storyboard中應該這樣設置:

然后拖線(和原來一樣)讓這些控件成為我們控制器的方法:
** 2.2在這個方法中寫代碼:**
//打開URL
@IBAction func openURL() {
//1.獲取應用程序?qū)ο? let app = UIApplication.sharedApplication()
let url = NSURL(string: "http://www.baidu.com")
app.openURL(url!)
}
//設置狀態(tài)欄
@IBAction func setStateBar() {
//1.獲取應用程序?qū)ο? let app = UIApplication.sharedApplication()
//2.設置應用狀態(tài)欄,設置之前, 要在info.plist文件當中設置 View controller-based status bar appearance == NO
//2.1設置狀態(tài)欄樣式.
app.statusBarStyle = .LightContent
}
//設置應用圖標數(shù)字
@IBAction func setAppIconNum() {
//注冊用戶通知
let app = UIApplication.sharedApplication()
//設置用戶通知類型
let setting = UIUserNotificationSettings(forTypes: UIUserNotificationType.Badge, categories: nil)
app.registerUserNotificationSettings(setting)
//設置應用圖標數(shù)字
app.applicationIconBadgeNumber = 10
}
//設置連網(wǎng)狀態(tài)
@IBAction func setNetState() {
//1.獲取應用程序?qū)ο? let app = UIApplication.sharedApplication()
//2.設置連網(wǎng)狀態(tài)
app.networkActivityIndicatorVisible = true
}
只要我們點擊了, 我們在storyboard中添加的控件, 它就會做一些相應的類似于打電話 發(fā)短信也是這樣指令
而我們圖片上的打電話 , 發(fā)短信也是同樣的道理
3如何實現(xiàn)類的單例
**3.1什么是單例: **
每一個應用程序都有一個應用程序?qū)ο?UIApplication)
這個對象是程序一啟動的時候就創(chuàng)建的.
而且起起至終之有一個.它是一個單例.
3.2為何實現(xiàn)單例
在我們的實際應用中, 我們不可能只是用系統(tǒng)提供的單例, 有時候, 也是需要我們自己創(chuàng)造單例的
**3.3 如何創(chuàng)立單例 **
首先, 要創(chuàng)建一個類, 這個類具有一個類方法(`shareXXX`)XXX為類名
其次, 我們需要在alloc方法中判斷我們的這個類是否有值, 如果有,第一步: 將已有的對象賦值給后創(chuàng)建的對象, 第二步: 拋出異常(讓系統(tǒng)崩掉)
如果沒有, 就直接調(diào)用[super alloc];
**3.3.1具體的代碼樣式: **
import UIKit
class Person: NSObject {
static var per:Person?
// MARK: -初始化方法
override class func initialize() {
per = Person()
}
class func shareInstance()->Person {
return per!
}
override init() {
if Person.per != nil {
//創(chuàng)建異常
let exc = NSException(name: "NSInternalInconsistencyException", reason: "There can only be one Person instance.", userInfo: nil)
//拋出異常
exc.raise()
}
super.init()
}
}
4 UIApplication 代理
關于我們的UIApplication代理
其實我們在創(chuàng)建一個新的程序的時候, 他就已經(jīng)幫我們給寫好了:

4.1方法及其調(diào)用的時間:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
// 應用程序啟動完畢時調(diào)用
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return true
}
// 應用程序?qū)⒁ソ裹c時調(diào)用
func applicationWillResignActive(application: UIApplication) {
}
// 應用程序進入到后臺時調(diào)用
func applicationDidEnterBackground(application: UIApplication) {
}
// 應用程序進入前臺時調(diào)用
func applicationWillEnterForeground(application: UIApplication) {
}
// 應用程序獲取焦點時調(diào)用
func applicationDidBecomeActive(application: UIApplication) {
}
// 應用程序退出時調(diào)用
func applicationWillTerminate(application: UIApplication) {
}
// 應用程序收到內(nèi)存警告時調(diào)用
func applicationDidReceiveMemoryWarning(application: UIApplication) {
}
}