/**ios
摘要:c++
掌握項目中常見的文件以級4大對象數組
*/網絡
1、項目中常見文件app
"Xcdoe5與Xcode6的項目結構"框架
》Info.plist是整個項目的重要配置文件不能刪除iphone
(1)Localization native development regionide
"本地化相關"函數
(2)Bundle display nameoop
"程序安裝後顯示在iphone/ipad上的名字"
(3)Icon file
"程序的圖標,Xcode5之前建立的項目有,通常用Icon.png,Xcode5之後建立的不在plist設置,在Images.xcassets設置"
(4)Bundle version
"程序版本號,AppStore每更新版本,版本要增長,內部項目管理的版本號,不對外"
(5)'Bundle versions string, short'
"用於itunes上顯示的版本號,即對外的版本。通常3個數組成"
(6)Bundle identifier
"應用的唯一標識,發佈到AppStore去"
》InfoPlist.Strings
"本地化【國際化】多語言版本"
》pch文件講解
"【pch文件幹什麼用?】"
(1)pch文件裏的內容被項目中的其它全部資源共享訪問
(2)定義宏 身高、電話,其它文件共享使用
(3)自定義日誌輸入
/*
*掌握什麼是DEBUG模式
*爲何日誌要在DEBUG下才輸出,由於日誌只對開發人員有用,發佈,安裝到手機上,給誰看(SB看得懂)?
*/
#ifdef DEBUG//
#define Log(...) NSLog(__VA_ARGS__)
#else
#define Log(...)
#endif
(4)使用頻繁的文件放在pch裏
(5)理解在pch中#ifdef __OBJC__的意思
/*
* 在#ifdef __OBJC__裏面的資源只能在.m .mm文件中被使用
* .m文件是純Object-C 文件 .mm是Object-C和C++混合文件
* 在#ifdef __OBJC__外面的資源,全部文件都能訪問
*/
(6)定義一個Person類型,添加name屬性,把Person類添加在#ifdef __OBJC__外頁面,在添加一個C++文件,編譯出現問題
緣由:c++不能使用Foundation框架,Foundation框架是屬性OC
"總結:通常公用的資源寫在#ifdef __OBJC__裏面"
(7)如何在Xcode6建立的項目中添加pch文件
2、四大對象
/*
*1.UIApplication
*2.UIApplicationDelegate
*3.AppDelegate
*4.UIWindow
*/
》UIApplication
"【什麼是UIApplication?】"
(1)UIApplication是整個應用程序的象徵,就像中國的象徵是五星紅旗
(2)每個應用都有本身的UIApplication,並且是單例,經過[UIApplication sharedApplication]獲取
//什麼是單例,程序運行到結束,只能有一個對象
//若是[[UIApplication alloc] init]建立對象,程序不被容許,由於application只有能一個對象
(3)ios程序啓動後建立的第一人對象就是UIApplication對象
"【UIApplication用來幹什麼】"
(1)用來設置全局性的東西
如:
設置網絡請求狀態/取消網絡請求狀態 application.networkActivityIndicatorVisible = YES;
設置應用圖標數字/清除圖標數據 application.applicationIconBadgeNumber = 2
設置狀態欄樣式
方式1.由控制器的一個方法決定【-(UIStatusBarStyle)preferredStatusBarStyle】
方式2.使用application設置【application.statusBarStyle = UIStatusBarStyleLightContent;】"可是不起做用"
//緣由:默認狀態欄樣由控制器來管理,若是想用application設置狀態欄有效,得在Info.plist的設置View controller-based status bar appearance = NO
(2)打電話、發短信、發郵件、打開網站
//調用application 的 openURL方法 【[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://1012@qq.com"]];】
//注:只演示打開網站,後面真機調試的時候,會演示打電話、發短信、發郵件
》iOS程序的啓動過程
UIApplicationMain函數講解"PPT"
UIApplicationDelegate方法介紹"PPT"
/*爲何要開啓【Main Runloop】事件循環
1. 監聽事件,事件由是NSRunLoop 類處理,RunLoop監視操做系統的輸入源,若是沒有事件數據, 不消耗任何CPU 資源。
2. 若是有事件數據,run loop 就發送消息,通知各個對象"
*/
》UIApplicationDelegate
(1)UIApplication有一個delegate屬性
(2)UIApplication的delegate的對象必須遵循UIApplicationDelegate協議
(3)UIApplicationDelegate協議能夠知道程序的運行狀態
//掌握UIApplicationDelegate的幾個方法
"總結:掌握程序的啓動過程並熟記"
》UIWindow
"【什麼是UIWindow】"
(1)窗口是用來顯示控制器的View的
(2)每個應用程序都有一個窗口
(3)打開文檔 Cocoa Touch Layer — UIKit — Guides— View Controller Programming Guide for iOS - Screens, Windows, and Views Create Visual Interfaces
查看窗口結構示意圖
"【玩弄窗口】"
(0)去除storybaord選項
(1)在didFinishLaunchingWithOptions中建立窗口,併成爲主窗口並可見
//- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//
// //建立窗口
// UIWindow *window = [[UIWindow alloc] init];
// window.frame = [UIScreen mainScreen].bounds;
// window.backgroundColor = [UIColor whiteColor];
//
// self.window = window;
// //成爲主窗口
// //[self.window makeKeyWindow];
//
// //成爲主窗口並可見
// //[self.window makeKeyAndVisible];
//
// return YES;
//}
(2)窗口是一個特殊的UIView對象,能夠往window添加子控件,如label switch控件
(3)通常不會在窗口添加子控件,會設置窗口的rootViewController屬性,將控制器的view添加到窗口上
//若是直接把控制器的view添加到窗口是不能讓控制的view進行旋轉
//但設置窗口的根控制器,控制器的view能夠旋轉
//由於旋轉事件傳遞是由UIApplication - UIWindow【窗口不作旋轉處理,只有控制器纔會作旋轉處理】 - 控制器
(4)獲取主窗口方式
*一個窗口當前能接受鍵盤和非觸摸事件時,便被認爲是主窗口。
*[UIApplication sharedApplication].delegate.window
*[UIApplication sharedApplication].keyWindow
*self.view.window
(5)畫圖理下UIApplication APPDelegate UIWindow RootViewController的關係
(6)指定storyboard,會本身建立窗口,並設置成爲主窗口,並設置窗口的根控制器
(7)鍵盤是添加在新的窗口中,叫UITextEffectsWindow;
做業:註冊頁面