开篇
在Xcode7中,我们会遇到一个问题,我的数据为什么加载不出来了?苹果已经不推崇pch文件了,但是作为习惯,我还是习惯用pch文件怎么办,每次新建一个项目都要设置一遍,有时候记不清楚还要百度一下,确实不方便所幸在这里好好总结一下。
iOS9的数据加载问题
iOS9以后苹果把把有HTTP请求都改成了HTTPS,导致应用加载不出数据。如下图所示:
错误原因可以看到是软件的传输安全出了问题,解决方法如下:
只要我们在上图中的plist文件中添加:NSAppTransportSecurity:Dictionary这个字段,然后设置AllowsArbitraryLoads:Boolean YES就可以了,但是我们死记硬背的话实在是太容易忘记了,每次都要百度一下实在痛苦。
解决方法:为了终结这个痛苦的回忆我们可以用下面两个方法去解决他
- 我们可以看到第一个图中的错误提示,App Transport Security has blocked a cleartext HTTP...,我们记住前三个字母去plist文件中去添加这个字段就好了,然后下拉设置Allows Arbitrary Loads 为YES就可以了。
- 另一个方法就是我们理解他的意思去记住这个问题,提示问题为APP数据传输安全方面的问题,然后我们去添加APP 传输安全这个字段,然后 允许他的任意加载,理解了他的意思,记住就容易多了。
pch文件的配置问题
苹果为什么要抛弃pch文件呢,原因可能是因为大家把大量的头文件和宏定义放到pch里边,导致编译时间过长。苹果去掉他可能是要加快编译时间增加用户体验。虽然失去了编程的便利性。但是苹果就是这么做了。
那我们又为什么非要再创建一个呢,自然是有他的好处的,下面说一下pch文件的用处。
- 存放一些全局的宏(整个项目中都可以用的宏)
- 用来包含一些全部的头文件(整个项目中都可以用头文件)
- 能自动打开或者关闭日志输出功能
创建流程
创建pch文件1:
命名保存:
Xcode中的设置:
设置好之后编译运行,系统会自动生成相对路径如下图所示:
绝对路径和相对路径
在图pct.3Xcode设置路径名称时,如果我们不按照“$(SRCROOT)/项目名称/pch文件名”的方式设置,而是直接把pch文件直接拖到对应的位置系统也会生成一个绝对路径,编译也不会错误,简单吧,但是,这里生成的是一个绝对路径,如果我们把项目改变文件夹路径改变就会出现错误。但是如果我们用“$(SRCROOT)/项目名称/pch文件名”的方式设置设置,不管我们怎么移动项目都不会出现问题,$(SRCROOT) 这个代表的就是相对路径,具体的路径都是由系统在编译时自动生成的。
后记
文章就先到这里,主要是为了总结一些常用的小知识点,希望对有问题的小伙伴有所帮助。