扒虫篇-Bug日志Ⅳ
</br>
1. Undefined symbols for architecture arm64:
解决办法:设置 Enable Testability即可
2. 莫名其面的 duplicate symbol XXXXX in :
解决办法:other linker flag -ObjC 造成的,有些时候设置other linker flag 为-ObjC会出现多次导入的报错。
3.不在主线程语句更新UI,会很晚才有提示,有的直接崩溃
[MBProgressHUD showHUD];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
//网络判断
if (![Reachability networkAvailable]) {
如果下面这句(回到主线程)不加上,会有问题
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUD];
[[MethodTool shareTool]ShowMessage:@"网络异常"];
return;
});
}
4.编译时找不到系统的string 文件
这是由于 OC和C++汇编时,.m没有改为 .mm 而搜索不到C++文件造成的Bug。
.m 文件中 #import 的所有 文件会依次检查自己导入的头文件是否存在,如果在 test.m中 #import 了testB.h 而 testB.h 中又用到了 C++文件就会出现这个问题。层层引用文件都会再编译时展开,所以#import 不要乱用,否则会加重编译时的任务量
即可
5. 打包时LaunchImage-800-Portrait-736h@3x.png pngcrush caught libpng error: 报错
意思就是读取启动 Plus图片失败,应该是识别不出来,此时项目是可以正常启动的。
原因:
图片不是真的PNG格式,图片属性“有无交错”被误设置为有了等等。
解决方案基本如下:
-
UI设计师让其重新生成,
-
删除原来的
-
Clean 一下(可以避免很多未知Bug),
-
再次导入新的文件,(名称最好改为@3x)
3.5 inch screen: LaunchImage-700@2x.png 4.0 inch screen: LaunchImage-700-568h@2x.png 4.7 inch screen: LaunchImage-800-667h@2x.png 5.5 inch screen: LaunchImage-800-Portrait-736h@3x.png iPad2 : LaunchImage-700-Portrait~ipad.png Retina iPads : LaunchImage-700-Portrait@2x~ipad.png
************更新**********
- Build Settings
- Packaging
- Compress PNG Files 改成NO
即可解决这个问题
所谓的Compress PNG Files并不是像字面意思那样为了压缩减少图片的大小,而是为了加快应用运行时的速度。Compress PNG Files实际上是将图片像素的颜色信息,转换成iPhone能够更快渲染的格式。
6.超出A部分的点击没有反应
因为超出了父视图的显示区域。
7. for -in 循环中的报错
for (NSString *str in jcrangeArray) {
if ([str isEqualToString:checkModel.jcfsid]) {
[jcrangeArray removeObject:str];
}
}
NSGenericException :Collection <__NSArrayM: 0x17065b240> was mutated while being enumerated.
You can't modify the array while looping through it with the for...in...
control statement.
- You cannot delete items from a NSMutableArray while iterating it.
There are several solutions to this:
1. Iterate a copy of the array
2. Use an index-based for loop instead of the for each syntax.
Not copying the array saves you an allocation and a few CPU cycles:
8.真机报错
明明没有锁屏啊,这.......
解决办法:拔掉手机重新连接到电脑上。
9.模拟器运行报错
I had to close xcode and delete derived data. Just delete this folder
~/Library/Developer/Xcode/DerivedData/
退出 Xcode,清除DerivedData数据。
10.模拟器运行报错
Undefined symbols for architecture i386:
"OBJCCLASS_$_JPUSHRegisterEntity", referenced from:
objc-class-ref in ZFHNotificationManager.o
"OBJCCLASS_$_JPUSHService", referenced from:
objc-class-ref in ZFHNotificationManager.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
解决办法:
极光推送SDK 从3.0.0版本开始不再支持i386模拟器,在升级文档中有说明
选择6、6s、7,及这些的plus的模拟器
这些不属于处理器为i386的模拟器
iPAD模拟器也要注意选择 非 i386 的模拟器
</br>