網(wǎng)絡(luò)請求報錯。
升級Xcode 7.0發(fā)現(xiàn)網(wǎng)絡(luò)訪問失敗辆脸。
輸出錯誤信息
#warning: 獲取app配置信息失敗: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
原因:iOS9引入了新特性App Transport Security (ATS)。
詳情:App Transport Security (ATS)
新特性要求App內(nèi)訪問的網(wǎng)絡(luò)必須使用HTTPS協(xié)議。
但是現(xiàn)在公司的項目使用的是HTTP協(xié)議沉唠,使用私有加密方式保證數(shù)據(jù)安全〈舐觯現(xiàn)在也不能馬上改成HTTPS協(xié)議傳輸搞监。
最終找到以下解決辦法:
在Info.plist中添加NSAppTransportSecurity類型Dictionary。 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads類型Boolean,值設(shè)為YES
Bitcode問題
原因:Xcode7 及以上版本會默認(rèn)開啟 bitcode 镰矿。
bitcode具體是什么就不解釋了琐驴。
解決方法:
1.更新library使包含Bitcode,否則會出現(xiàn)以上的警告秤标。
2.關(guān)閉Bitcode绝淡,簡單粗暴。
Build Settings”->”Enable Bitcode”改成"NO"苍姜。
項目運行報錯如下
<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
出錯原因:設(shè)置app的狀態(tài)欄樣式的使用使用了舊的方式牢酵,在info.plist里面設(shè)置了View controller-based status bar appearance為NO,默認(rèn)為YES衙猪,一般式iOS6的時候使用這種方式馍乙,iOS7布近,8也兼容,但是到了iOS9就報了警告丝格。
解決辦法:
刪除 原先的設(shè)置代碼
//設(shè)置狀態(tài)欄的白色 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
修改方式將View controller-based status bar appearance設(shè)置為YES撑瞧,然后使用新的方式來實現(xiàn)狀態(tài)欄的樣式。
在你的 自定義導(dǎo)航控制器里面 寫上如下方法:
//設(shè)置狀態(tài)欄的(亮色)白色
-(UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
記住要clean 或者刪除應(yīng)用程序 重新運行
升級Xcode 7 之后 ios 9 模擬器 一啟動程序 就直接報錯
報錯如下
***** Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3505.16/UIApplication.m:3294**
原因:
新的SDK不允許在設(shè)置rootViewController之前做過于復(fù)雜的操作显蝌,導(dǎo)致在didFinishLaunchingWithOptions 結(jié)束后還沒有設(shè)置rootViewController
Xcode7需要所有UIWindow必須立即先設(shè)置一個rootViewController
解決辦法:
先設(shè)置個rootVIewController 之后重新賦值
UIWindow *window = [[UIWindowalloc] initWithFrame:[UIScreenmainScreen].bounds]; window.rootViewController = [UIViewController new];