iOS 常见bug收集

作者: 寻形觅影 | 来源:发表于2017-02-28 14:57 被阅读482次

该文章收集我在开发中遇到的问题,因为有些问题上次出现后可能很长时间后会再次出现但是已经忘了当时怎样解决的,会耗费很多时间,故将问题都记录下来,开始可能不是很多,陆续会更新。

1、今天发生一个:EXC_ARITHMETIC (code=EXC_I386_DIV, subcode=0x0))的错误,打断点定位位置如图所示,这是因为arc4random() 函数取余时,取余对象为零所致,还有一种可能就是分母为零。但是令人匪夷所思的是该问题只在5s及以下模拟器出问题,6以上模拟器没有问题!!!真机没有进行测试,有兴趣的苹友可以试一试。
2、下面这个错误是因为将字典类型直接当成字符串类型使用所致,类似于rangeOfCharacterFromSet 这样的错误大多是因为类型使用错误所致。
3、 Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]这个错误

原因是因为- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个函数的返回值是个null!!

4、下面这一 x86 问题(如下图所示)发生原因主要有:(1.)有框架文件没有被导入或者导入错误,只需导入框架文件即可。(2.)在导入某一文件时,将.m文件当成.h文件导入了所以会出现一个duplicate的错误提示。(3.)重复命名全局变量。
5、控制台打印如下图问题主要是因为在刚创建工程时将自带的ViewController的.h 和. m文件删除发生的,是因为少了一步操作将storyBoard中控制器关联文件制空或者关联其他控制器文件即可。
6、模态跳转时控制台打印如下警告:Presenting view controllers on detached view controllers is discouraged ,原因是present出来的模态窗口,再次使用present 来弹出其它的子窗口,这是禁止的!只要把self直接模态跳转页面改成从根控制器跳转即可。
我在这里主要是rootViewController是present出来的所以只需作如下修改后警报消失。
//[self presentViewController:loginVC animated:YES completion:^{
//    NSLog(@"XXX");
//}];
LoginViewController * loginVC = [[LoginViewController alloc] init];
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[delegate.window.rootViewController presentViewController:loginVC animated:YES completion:^{
        NSLog(@"XXX");
}];
7、关于Unbalanced calls to begin/end appearance transitions for <>警告,这是因为一个view未加载完,你又去加载另一个view导致的。我这里的操作就是在一个控制器的ViewDidLoad中直接present了另外一个控制器导致的。这是不对的,改后警告消失。
8、出现emitted errors but did not return a nonzero exit code to indicate failure关于图片的错误。如下所示
While reading /Users/*******/Desktop/guwen27/guwen/Vendors/lib/Channels/CmbWallet/SecreteKeyBoard/kb_bg1.imageset/kb_bg1@2x.png pngcrush caught libpng error:
   B\233\244`\271\243,lA\233\364\213]>\370U\271\2438P\271\243\350\345\370\277x\345\370\277\252qD\233\244`\271\243\370U\271\243�Y    

Command /Applications/Xcode.app/Contents/Developer/usr/bin/copypng emitted errors but did not return a nonzero exit code to indicate failure

问题原因:我这里是因为同一Target中导入了相同名字的文件。还有一个原因:一可能是同一文件导入了两次
解决办法:project target ->Build Phases -> Copy Bundle Resources 然后搜索你的文件名(如下图所示)



此时不要随便删除文件,看你报错的文件是哪个文件夹下的,在copy bundle resources 中删除该文件夹下的文件即可解决问题。

9、在程序运行后或者编译后 出现类似警告 warning:no rule to process file "xxxxxxxxx" of type sourcecode.c.h for architecture i386 (x86_64/armv7)如下图所示:

问题原因:具体的不太清楚,可能是不适配ios6,7,8等系统问题
解决办法:project Target-> Build Phases-->Compile Sources--把 警报的 .h 文件删掉(减掉)即可解决。

10、在使用UIActionSheet同时调用相机相册时发生警报如下
Warning: Attempt to present <UIImagePickerController: 0x292b400>on <**Controller: 0x723c150> which is already presenting <UIAlertController: 0xd37b8b0>

问题原因:因为已经有actionsheet存在了,不能present新的界面出来相机相册与actionSheet冲突
解决办法:原来调用相机相册都是在代理方法

-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex;

只需要改到另外一个代理方法中即可

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex;
11、控制台打印问题 :[] nw_host_stats_add_src recv too small, received 24, expected 28
[] ____nwlog_simulate_crash_inner_block_invoke dlopen CrashReporterSupport failed

如下图所示:



这类问题不影响运行就是看着跟崩溃似的不舒服~~
解决办法:打开Xcode : Product –>Scheme–>Edit Scheme -> Arguments(第二个选项卡) -> Environment Variables
然后再这里面添加一个环境变量 OS_ACTIVITY_MODE 设置值为”disable” ,设置完后clean和build一下 问题就解决了。如下图:

12、使用AFNetWorking时无意中发生的问题Assertion failure in -[AFHTTPRequestSerializer requestWithMethod:URLString:parameters:error:]
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: URLString'

问题原因:这是使用get请求时发生的,因为传入的url包含无效的参数,在这里传参数时我直接将参数写入url而没有使用参数params,但是参数中包含中文,没有经过utf8。于是悲剧了~~


解决办法:1、将含有中文的url使用utf8格式转一下(如下图所示):



2、使用参数params,根据自己的封装将参数摘出来放在一块然后交给AFNetWorking去处理(如下图所示):


13、使用block时发生EXC_BAD的崩溃错误

问题原因:从上图可以看出address = 0x0,block指向了一个空的地址
解决办法:在调用block前先判断是否为空:


14、cocoa pods更新1.0.0 以上版本后发生:
Undefined symbols for architecture arm64:
"OBJC_CLASS$_JRNetWork", referenced from: xxxxx.0
ld: symbol(s) not found for architecture arm64 的错误。

问题原因:是由于旧版本的cocoapods第三方类库编译文件已存在,导致更新的类库无法编译,才造成arm64这个错误出现。
解决办法:在工程目录中只需要在libPods-xxxx.a点Show in Finder,将Products目录下文件全部清空,重新编译就好了。

15、在定义全局变量时发生循环引用错误,如下:
问题原因:

现在在 .h 文件中直接定义如:NSString * const age = @"24";const NSString * age = @"24";会导致循环引用问题。

解决方法:

只在.h文件声明,在.m文件实现。如: <xxxxx.h>中 extern const NSString * name; <xxxxx.m>中 const NSString * name = @"jack";
或者直接单独在.m中实现也可以。

16、在设置静态变量时发生 static declaration of ‘name’ follows non-static declaration的错误。
问题原因:静态声明“name" 遵循了非静态的声明(其实英文解释很明白了,无奈~英语水平只有二级半🙄)就是说你现在用的这个变量名字已经用过了,而且遵循的是非静态声明。
解决办法:改变量名~~
17、发生*Sending 'xxxxViewController const __strong' to parameter of incompatible type 'id<xxxxxxxDelegate>'的错误。
问题原因:未遵循协议
18、发生*Sending 'xxxxViewController const __strong' to parameter of incompatible type 'id<xxxxxxxDelegate>'的错误。
问题原因:未遵循协议

相关文章

  • iOS 常见bug收集

    该文章收集我在开发中遇到的问题,因为有些问题上次出现后可能很长时间后会再次出现但是已经忘了当时怎样解决的,会耗费很...

  • 项目常见bug收集

    1、https页面加载http资源导致在IOS下报错的问题 解决:属于跨域范畴,要加载相同协议的资源。如:页面引入...

  • iOS Bug收集

    1.崩溃信息如下: 在遍历set时,对set做了操作(删除或修改),发生崩溃。修复办法: 2.发布app时,报如下...

  • iOS常见bug

    1.控制器之间跳转出现一闪或感觉一卡现象 为控制器的基view设置个背景色即可解决。 2.UITableViewC...

  • iOS 常用第三方-动画

    常见动画 awesome-ios-animation - iOS Animation 主流炫酷动画框架(特效)收集...

  • BugTags配置自动上传符号表

    我们项目中bug收集工具用的是Bugtags,如果你们项目集成的 也是Bugtags iOS SDK 版本 >= ...

  • iOS bug收集工具浅谈

    1、Bugtags 集成简单,支持手动和CocoaPods集成;使用方便,直接在应用中所见即所得提交 Bu...

  • iOS,维护 崩溃bug收集

    iOS线上bug 1.苹果提供,需要用户配合 0.收集的是打开下面选项的用户-设置-隐私- 1.xcode打开 2...

  • iOS常见错误与bug的解决方案(收集)

    *** 版权声明: 以下文章都是从互联网上收集并整理而成的。 *** CUICatalog: Invalid as...

  • iOS---crash日志分析

    crash 日志产生的两种原因 违反 iOS 策略 代码所出现的 bug 常见的Exception Type & ...

网友评论

    本文标题:iOS 常见bug收集

    本文链接:https://www.haomeiwen.com/subject/hcwcbttx.html