工作中项目工程编译时会遇到很多报错,解决办法基本是百度,有些问题之前遇到过了但时间长了容易忘记当时的解决办法,所以有必要把今后的这些问题汇总起来,没事的时候拿出来看看
Question 1:
The file “XXX” couldn’t be opened because you don’t have permission to view it
解决办法:
xcode—》file-》Workspace Settings
重新编译 搞定!
Question 2:
很久之前写的代码今天拿出来运行 结果报了一堆错误 找不到框架 ?
解决办法:
打开终端 cd + 项目路径 然后 pod update
重新编译 ok
Question 3:
近期接手一个企业管理项目,网络请求用的是ASIHTTPRequest 这个库历史悠久 是MRC环境下的产物,所以这就用到了MRC 与 ARC 混编 ,其实也很简单 先看下项目中导入MRC文件会有什么影响
可以看到有20个错误,都是因为用了retain release 这些MRC中的关键字
解决办法:为特定的一些MRC文件添加标签
重新编译 尚未搞定 还有7个错误 如下图
接下来导入一个系统库文件(libz.1.2.5.tbd)
再次编译 搞定!
Question 4:
公司正在集成支付宝SDK ,AlipaySDK依赖了很多系统的api ,第一次编译遇到了30个错
Undefined symbols for architecture x86_64:
"_CNCopyCurrentNetworkInfo", referenced from:
解决办法:集成SystemConfiguration.framework 减少为19个
Undefined symbols for architecture x86_64:
"_CTRadioAccessTechnologyCDMA1x", referenced from:
解决办法:集成CoreTelephony.framework 减少为14个
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_CMMotionManager", referenced from:
解决办法:集成CoreMotion.framework 减少为13个
Undefined symbols for architecture x86_64:
"std::__1::basic_string, std::__1::allocator >::__init(char const*, unsigned long)", referenced from:
解决办法: 集成libc++.tbd libz.tbd
Question 5:
有时候在拿到别人的项目的时候,运行时会遇到一些找不到头文件的错误,这很有可能就是工程中pch文件的路径不正确 比如下面这个文件对一些pch中定义的宏报错 意思就是你使用了未定义的标识符
解决办法:修改pch文件路径
1.按照截图提示1 找到设置pch文件路径的位置
2.修改文件路径 介绍一个linux命令$(SRCROOT) 利用他可以自动找到本机中此项目的根目录如下图所示 ,蓝色框选中的部分
3.既然利用$(SRCROOT)找到了根目录,那么接下来再拼接下pch文件的具体路径