公司Xcode 升级到了7.0之后,项目出现了各种问题,下面就对这些问题做个总结,给出解决方案.
一 app启动结束之前没有RootViewController
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
IOS9里面,不允许在didFinishLaunchingWithOptions
协议结束之前没有rootViewController,最快得解决方法:
在Window
创建之后, 新建一个ViewController
名字可以随便, 把新建的这个ViewController
设置为Window
的rootViewController
,已做测试可以完美解决这个问题
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self.window makeKeyAndVisible];
[self.window addSubview:self.bigPlaceholderView];
DefaultRootViewController * defaultRootVC = [[DefaultRootViewController alloc]init];
self.window.rootViewController = defaultRootVC;
二 HTTP网络请求失败
IOS9要求App内访问的网络必须使用HTTPS
协议。为了强制增强数据访问安全, iOS9 默认会把所NSURLConnection
、 CFURL
、 NSURLSession
发出的 HTTP 请求,都改为 HTTPS 请求:iOS9.x-SDK编译时,默认会让所有从NSURLConnection
、 CFURL
、 NSURLSession
发出的 HTTP 请求统一采用TLS 1.2 协议。因为 AFNetworking 现在的版本底层使用了 NSURLConnection
,众多App将被影响(基于iOS8.x-SDK的App不受影响)。服务器因此需要更新,以解析相关数据。如不更新,可通过在 Info.plist 中声明,倒退回不安全的网络请求。而这一做法,官方文档称为ATS,全称为App Transport Security,是iOS9的一个新特性。
方法一: 让公司服务端升级使用TLS 1.2
方法二: 可通过在info.plish中声明,倒回到不安全的网络请求,依然能让App访问指定http,甚至任意的http
1.在info.plist中添加 NSAppTransportSecurity
类型Dictionary
2.在NSAppTransportSecurity
下添加NSAllowsArbitraryLoads
类型Boolean
,值设为YES
三 升级Xcode7 cocoapod管理的第三方出现各种报错
解决办法将cocoapod升级到最新的版本(如果你不是一个人写代码请让你同事的也升级了),或者把cocoapod里面的第三方都删除掉,然后重新安装一遍,简单说就是清空podfile里面的内容,然后依次执行pod install --no-repo-update
,pod update --no-repo-update
,然后再把你用的第三方粘贴到podfile里面再次依次执行 pod install --no-repo-update
,pod update --no-repo-update
,亲测可用
四 语言国际化
IOS9之后我发现,项目里面的国际化文字都不显示了,之前国际化那一行代码被我写成了宏,但是我把宏全局替换成了系统API#define NSLocalizedString(key, comment) \ [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
就没有任何事情了 , 后来我发现 这条代码本来 就是个宏定义...
其他太大的问题还没有发现,大家have Fine