好久没更新简书,嘻嘻☺️,我胡汉三又肥来了~~~
废话不多说,直接进入正题,希望能帮到优雅的过坑!!!
1
local declaration “XXX”hide instance variable
reason:一般是你函数里面定义的变量和class属性变量重名了。很少有和系统变量重名的情况。 这样的情况,修改一下变量的名字就好。
2
Undefined symbols for architecture x86_64:
可能由于某些类库不支持64位Architecture造成,
可以在项目Build Setting-->Architecture设为非64位的选项
3、编译
warning:ld: warning: directory not foundfor option
选择工程, 编译的 (targets)
选择 Build Settings 菜单
查找 Library Search Paths 和 Framework Search Paths,删掉编译报warning的路径即OK
4
Undefined symbols for architecture armv7s: “_OBJC_CLASS_$_SZAdWebViewDelegate”, referenced from:xxxx
查找了半天,总以为缺少某个文件,后对比正常的sample发现问题出在armv7s,这是针对iPhone5 cpu优化的编译,可能你某个库不支持,解决方法是:
Build Setting->Build Active Architecture only 的值由NO设为YES,查了一下这个选项的资料:
这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。
而设置为no时,会编译所有的版本。
这个是设备对应的architecture:
armv6:iPhone 2G/3G,iPod1G/2G
armv7:iPhone 3GS/4/4s,iPod3G/4G,iPad1G/2G/3G
armv7s:iPhone5, iPod5
编译出的版本是向下兼容的(不太对,应该说,设备是向下兼容的),比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。
所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。
5
Xcode “Attaching to…” 卡住,模拟器停留在启动界面
解决方案:
网上有很多方法,什么Clean Build Folder,和各种删除projects、driveddata
试试 重启大法
6
error: macro names must be identifiers YourProject_prefix.pch
原因: 因为你弄脏了预处理器宏,在它处于<Multiple Values>的时候修改了它
解决方法: Configiration选择All Configirations,清空它 然后分别重新定义你的Debug,Release,Distributin预处理器宏吧
7
warning: no rule to process file '$(PROJECT_DIR)/LoadingView.h' of type sourcecode.c.h for architecture armv6
原因: Target里Compile Sources里含有头文件 了,那里面不需要头文件
解决方法: 从Target里Compile Sources里删除头文件
8、Command
原因: png图像文件拷贝失败,看看信息上面提示Can't find哪个文件,一般都是从文件系统里删除文件而没有通过Xcode删除造成的,Xcode的项目配置文件依然纪录着这个文件的引用
解决办法: 给文件系统里增加相应的文件,或者从Xcode的Groups & Files删除它,或者从Target的Copy Bundle Resources里删除它
9
Code Sign error: The identity 'iPhone Developer: Your Name' doesn't match any valid certificate/private key pair in the default keychain
原因: 签名错误
解决办法: Target -> Get Info -> Build -> Code Signing -> 修改签名
记得左上角的Configuration类型要跟当前Build类型对应(Debug, Release, Distribution),否则改了也白改
10
could not create bundle folder for versioned model *.moda(好像是这个后缀名的这个文件)
原因:编译一次会产生一个新的
解决办法:应该把编译产生出来的moda文件都删了,然后clean下工程,重新build即可
11
error:Cannot assign to 'self' outside of a method in the init family
原因:只能在init方法中给self赋值,Xcode判断是否为init方法规则:方法返回id,并且名字以init +大写字母开头+其他 为准则。例如:
- (id) initWithXXX;
出错代码:
- (id) Myinit{
self = [super init];
……
}
解决方法:
- (id) initWithMy
{
self = [super init];
}
12
iOS真机调试时,报错:failed to get the task for process 20900
原因:
证书问题,project和targets的证书都必须是开发证书,ADHOC的证书会出现此问题。
解决方案:
project和targets的证书使用开发证书。
13
当 一个socket正在连接,这时又一个新的socket建立链接,会抛出错误 “ Attempting to connect while connected or accepting connections. Disconnect first.”
原因:
第一个socket还没返回isConnected 为YES, 就建立第二个socket连接。
解决方案:
****加上这两句代码 可释放使用完的asyncUdpSocket
14
tcp socket willDisconnectWithError:Error Domain=NSPOSIXErrorDomain Code=65
"The operation couldn’t be completed. No route to host"
No route to host (socket error ::10065)
产生此问题的原因:网络连接不上此服务器。
解决:查看ip是否正确,查看调试设备网络连接是否正常。
15、报错:
CALayer bounds contains NaN:
绘图时,某个长宽值中包含除数为0的操作。
解决方案:在分母处加上不为零的判断,防止0出现在分母地方
16、报错:
libxml/tree.h not found 第三方库找不到的错误
解决方案:
步骤1:
工程-->PROJECT-->Build Settings
将“Header Search Paths”的值设置为<${SDK_DIR}/usr/include/libxml2>即可。
步骤2:
工程-->TARGETS-->Build Settings
将“Header Search Paths”的值设置为<${SDK_DIR}/usr/include/libxml2>即可。
17、报错:
iOS Expected unqualified-id 和 Unkown type name 'NSString'
iOS使用到OC与C++混编的时候刚把C++的类拖入工程编译, NSObjCRuntime与NSZone就报错:
Expected unqualified-id Unkown type name ‘NSString’ Unkown type name ‘Protocol’
解决方案:
修改你的.pch(项目头文件) 将所有的import与define的代码全部放在#ifdef OBJC*****与#endif* 之间, 如下我将所有的define与import代码放入了一个.h头文件中, 然后在这中间导入头文件.
#ifdef __OBJC__
#import "xxxxxxxx.h"
#endif // OC的头文件
这是因为将C++拖入项目之后, 默认编译会先编译C++类, 编译之后导入OC的类的时候, 编译的场景是C++, 所以会出现unknown type的报错, 使用了#ifdef OBJC与#endif 之后, 就相当于说着中间的定义与导入时OC环境. 从而规避掉了报错
如果本文帮到了你,希望动手点一下👍,❤️,还可以➕关注,感谢~~~