iOS 常见bug收集

 该文章收集我在开发中遇到的问题,因为有些问题上次出现后可能很长时间后会再次出现但是已经忘了当时怎样解决的,会耗费很多时间,故将问题都记录下来,开始可能不是很多,陆续会更新。
  • 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、Unkonwn class ViewController in Interface Builder file控制台打印如下图问题主要是因为在刚创建工程时将自带的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关于图片的错误。如下所示:

    iOS 常见bug收集_第1张图片

While reading /Users/*******/Desktop/guwen27/guwen/Vendors/lib/Channels/CmbWallet/SecreteKeyBoard/kb_bg1.imageset/[email protected] 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 然后搜索你的文件名(如下图所示):

iOS 常见bug收集_第2张图片

 此时不要随便删除文件,看你报错的文件是哪个文件夹下的,在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 on <**Controller: 0x723c150> 
which is already presenting 

 问题原因:因为已经有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
    如下图所示:
    iOS 常见bug收集_第3张图片

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

iOS 常见bug收集_第4张图片

  • 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前先判断是否为空:


iOS 常见bug收集_第5张图片
  • 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目录下文件全部清空,重新编译就好了。


iOS 常见bug收集_第6张图片

iOS 常见bug收集_第7张图片
  • 15、在定义全局变量时发生循环引用错误,如下:
iOS 常见bug收集_第8张图片

 问题原因:现在在 .h 文件中直接定义如:NSString * const age = @"24";const NSString * age = @"24";会导致循环引用问题。
 解决方法:只在.h文件声明,在.m文件实现。如: extern const NSString * name; 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'的错误。

 问题原因:未遵循协议~~

  • 18、使用Application Loader上传.ipa安装包时发生ERROR ITMS-90717: “Invalid App Store Icon. The App Store Icon in the asset catalog in ‘*.app’ can’t be transparent nor contain an alpha channel.”
     问题原因:项目里添加了1024x1024的icon图标,但是图标存在alpha通道,需要将其去掉。
     解决办法:1、直接找UI换张图;2、先把PNG格式的图片导出成JPG,然后打开JPG格式图片,再次导出,导出成PNG。使用最后导出的PNG即可。

  • 19、使用Application Loader上传.ipa安装包时出现错误:An error occurred saving your changes to the Apple database. This problem may be a transient issue on the Apple side. If the problem persists for more than an hour, please contact your iTunes representative. (1016)意思是说:将更改保存到Apple数据库时发生错误。在苹果方面这个问题可能只是暂时的问题。如果问题持续超过一个小时,请联系iTunes代表。
     问题原因:可能是苹果服务器原因,,,
     解决办法:1、我是抱着试一试的态度就直接没有管这一错误,直接选择发送选项,继续走后面的上传流程,最后提示上传成功,经过十几分钟的忐忑之后在AppStore中刷新出来了上传的版本。

  • 20、使用pod install 时发生如下问题:

    iOS 常见bug收集_第9张图片

然后根据提示我在Build Settings -> Other Linker Flags 中添加 `$(inherited)`之后问题来了,运行发生如下错误:

iOS 常见bug收集_第10张图片

 能够知到问题出在了那,因为能看出来:


但是不知道怎么解决~,解决方法:使用$(inherited) 而不是`$(inherited)`

  • 21、directory not found for option '-L / directory not found for option '-F

     问题原因:查询 Library的时候出现异常。/ 查询 Framework的时候出现异常。
     解决方法:依次 Project -> targets -> Build Setting -> Library Search Paths 删除里面的报错路径 / 依次 Project -> targets -> Build Setting -> Framework Search Paths 删除里面的报错路径

  • 22、 Undefined symbol: _OBJC_CLASS_$_JPUSHService

     需要导入JPUSHService依赖库,我这里是因为使用pods时添加了JPUSH加载项却没有执行 pod install操作。

你可能感兴趣的:(iOS 常见bug收集)