iOS开发---- 开发错误汇总及解决方法
本文转载至 http://blog.csdn.net/shenjx1225/article/details/8561695
一、今天调试程序的时候,出现了一个崩溃,信息如下:
2013-02-01 09:05:23.929 SD4iPhone[627:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of sections. The number of sections contained in the table view after the update (5) must be equal to the number of sections contained in the table view before the update (5), plus or minus the number of sections inserted or deleted (0 inserted, 1 deleted).'
*** First throw call stack:
(0x2424052 0x961d0a 0x23cca78 0x14822db 0x18d4257 0x18df518 0x18df593 0x9699b58 0x12111 0x2425e72 0x14119ef 0x23f897f 0x235bb73 0x235b454 0x235adb4 0x235accb 0x2801879 0x280193e 0x1850a9b 0x20c22 0x2a05)
terminate called throwing an exception(lldb)
我要做的是一个table有几个section,每个section都存放一个个人地址,最后一个section是添加个人地址用的,如果地址数量达到5个,则最后一个添加新地址的section不显示。
之前section个数是这样给的:
- return [self.addsArray count]<5 ? [self.addsArray count] + 1 : [self.addsArray count];
在删除的时候先删除数据源,然后做删除列表刷新界面操作,但是这样会报出如上的错误。
这个错误的意思是说:我删除之前有5个section,删除之后section数量不变(由于我需要重现添加新地址这个section就导致section数量不变)。这是矛盾的,所以xcode就给我报错了。
我的解决办法是:定义了一个局部变量sectionCount,未作删除操作时,它的数量就是
- [self.addsArray count]<5 ? [self.addsArray count] + 1 : [self.addsArray count];
再删除操作时是这样的:
- BOOL success = [[DataCenter singleton] deleteAddressFromeDB:userAdds.user_id
- withAddressId:userAdds.address_id];
- [self.addsArray removeObjectAtIndex:deleteSection];
- sectionCount = [self.addsArray count];
- [addressTable deleteSections:[NSIndexSet indexSetWithIndex:deleteSection]
- withRowAnimation:UITableViewRowAnimationFade];
- sectionCount = sectionCount+1;
- [addressTable reloadData];
综上所述:1.先删除数据源,再做删除section操作,2.再增加一个section(添加新地址的),再刷新界面。这样就可以解决这个问题了。
二、EXC_BAD_ACCESS
这个问题对于初学者来说,估计够DT的。这个崩溃最大可能就是过度释放引起的,但是从打印的信息根本看不出来,这里说一个我常用的方法,如下图(xcode版本不同,位置可能不一样,我用的是4.5的版本):
-->(勾上Enable Zombie Objects)
然后再次运行,可以看到这样的打印信息:
可以看出应该是一个table过度释放了(运气好的话会在代码中直接指出你崩溃的那一行),然后去找那个table在哪过度释放了,这样问题就解决了。(当然了,这个方法并不是百试百灵,有时候你还得一步步的跟踪,调试)
三、Undefined symbols for architecture i386:
解决办法:http://blog.csdn.net/azhou_hui/article/details/18312047
四、Local declaration of 'xxx' hides instance variable
这是由于定义了一个与成员变量相同名称的局部变量引起的,只要将局部变量或者成员变量的名称修改一个就行了。
五、-[__NSArrayM respondsToSelector:]: message sent to deallocated instance 0xfe8afb0
消息发送给了一个已经释放的对象,就是说你使用的对象已经被释放掉了,检查一下这个对象的内存管理吧。
***
六 、Unbalanced calls to begin/end appearance transitions for <UIViewController: 0x1111fec0>.
找到了出现问题的地方:
- 1. id pp = [vc performSelector:@selector(presentingController)];
- 2. [pp presentModalViewController:nav animated:YES];
在第一行代码中presentingController方法中有动画还未执行完成,第二行就开始了,这就导致了出现上述问题。解决类似问题的办法就是让第一个动画执行完成之后再执行下一个动画。
七、Direct access to objective-c's isa is deprecated in favor of object_setClass() and object_getClass()
在xcode 4.6的jsonKit中碰到上面的警告,谷歌了下,有下面两个解决办法:
object->isa = xxx;替换为object_setClass(object,xxx) ;或者object_getClass(object) = xxx;
八,模拟器上图片显示,真机不显示
原因可能有一下两种:
1.图片非png格式
2.图片名称大写问题,模拟器不区分大小写,真机区分
(刚学习的,如果还有其他可能,欢迎补充)
九、第一次运行崩溃,第二次正常
解决办法:
把调试器LLDB换成GDB
步骤:
新版XCode(4.3以后的)的调试器,默认是用lldb,据说ll这套是比较高级的新版本。
可是XCode下用貌似有各种问题。比如断点去掉了依然不停的断在那里。
如果不胜其烦,可以用gdb来替代。
Product->Edit Scheme-> Run xxx.app(TargetName) -> Info -> Debugger 选择gdb即可
十、warning: no rule to process file '$(PROJECT_DIR)/Photo/SelectFileDetailVC.h' of type sourcecode.c.h for architecture armv7
找到“Build Phases”(不知道在哪的可以看上面第三个问题,有步骤),删除掉“SelectFileDetailVC.h”这个文件即可。
十一、Unbalanced calls to begin/end appearance transitions for <uivewcontroller>
这个问题是由于上一个动画还没结束,下一个动画就开始了,造成的。
这里有个一解决方法:http://www.kaifajie.cn/ios/9413.html
十二、ASIHTTPRequest 类库在iOS 7.0中(这个是转来的,不过我发现iOS6也会有警告),会有一些报错警告,需要稍作修改:
1、
if ([inputStream streamStatus] == NSStreamEventErrorOccurred) {
修改成:
if ([inputStream streamStatus] == (NSStreamStatus)NSStreamEventErrorOccurred) {
2、
return [[NSDate date] addTimeInterval:maxAge];
修改成:
return [[NSDate date] dateByAddingTimeInterval:maxAge];
十三、xcode4.5真机调试问题:
提示信息如下:
Xcode cannot run using the selected device.
Choose a destination with a supported architecture in order to run on this device.
1、怀疑证书有问题。不过检查了很久都没有发现。
2、开始怀疑ios的版本问题。真机的ios版本是ios5.1。xcode4.5是给最新版本的ios6的。不过感觉也不对,以前的xcode版本会提示xcode不支持你现有设备的版本。建议你下载这个版本的ios debug包。但是这次并没有这个提示。
我又用一台4.1版本的设备链接到xcode。这次就提示xcode只支持ios 4.3、5.0、5.1、6.0这几个版本。这次排除了设备的ios版本问题。
这时候只能求助万能的google了。发现解决方案了。http://stackoverflow.com/questions/11673424/xcode-4-4-unable-to-run-project。
原来是xcode4.5现在只支持ARM7指令的编译。现有项目设置是同时支持ARM6和ARM7编译。把项目编译选择成只支持ARM7就可以真机调试了。根据帖子讲,xcode4.5编译出来的程序只能运行在ios4.3以上的系统。如果想兼容旧有版本的话需要使用旧版本的xcode编译。(可能还有另外的解决方案,暂时没有去研究)
十四、(format 10, created by Subversion 1.6)问题
原文链接:http://blog.csdn.net/tongzhitao/article/details/18221831
项目,用Version工具check out。
Xcode5升级了相关东西,就出现了 (format 10, created by Subversion 1.6)问题。
原因应该是,版本太旧了。相当于我在低版本时候checkout了项目。需要升级。
终端:svn upgrade 就可以了。
相关svn工具也需要升级
十五、"library not found for - "解决办法
解决办法:http://lizi464789754.blog.163.com/blog/static/168937085201411134123538/
待续。。。
iOS开发---- 开发错误汇总及解决方法的更多相关文章
- 移动端H5开发遇到的问题及解决方法
本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...
- 内容分享-迅为IMX6开发板编译问题及解决方法
[经验分享]IMX6开发板编译问题及解决方法本文转自迅为IMX6开发板售后讨论群,分享给大家~ 物理主机 win10 64 位专业版.虚拟机 VM12 Pro.开发环境采用迅为提供的开发环境: Ubu ...
- 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法
错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...
- IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”
Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...
- [代码]--IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”
Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...
- Hadoop常见错误问题及解决方法总结二
问题导读:1.遇到问题该如何排除错误?2.看不到namenode的可能原因是什么?3.地址占用该如何解决?4.could only be replicatied to 0 nodes, instead ...
- android studio 错误汇总以及解决办法
android studio 错误汇总以及解决办法 参考 https://www.jianshu.com/p/7c7de6562231 问题1. Error:Execution failed for ...
- coreseek常见错误原因及解决方法
coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...
- android 真机调试出现错误 INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法。
关于这个神奇的 内存不够错误的通常解决方法,网上大把,建议大家在尝试过了网上的方法后再来尝试下我的这种方法. 编译工具: android studio 测试真机:米 2 调试的时候出现:INSTALL ...
随机推荐
- Junit框架使用--JUnit常用断言及注解
从别人博客中抄过来一点东西 原文地址:http://blog.csdn.net/wangpeng047/article/details/9628449 断言是编写测试用例的核心实现方式,即期望值是多少 ...
- hdu 2857 点在直线上的投影+直线的交点
Mirror and Light Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 文本生成器(bzoj 1030)
Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版.该软件可以随机生成一些文章―――总是 ...
- Codevs 3578 无线网络发射器选址== NOIP 2014 Day2 T1
3578 无线网络发射器选址 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 随着智能手机的日益普及,人们对无线网的需求日益增大. ...
- LeetCode OJ--Single Number
https://oj.leetcode.com/problems/single-number/ 给一个数列,其中只有一个数不是两两相同的,在O(n)时间内求出来,并且不使用额外空间. 使用异或操作,如 ...
- LeetCode OJ--Gray Code **
http://oj.leetcode.com/problems/gray-code/ 求格雷码的表示,主要应用递归. 递归生成码表 这种方法基于格雷码是反射码的事实,利用递归的如下规则来构造: 1位格 ...
- react-native初始化项目的时候安装失败,如何解决【摘】
首先初始化项目报错: 解决方法: 将这个版本号改为: 然后将这里: 改为: 版本号相对应 然后便可安装成功! [注:转载:https://blog.csdn.net/wwrzyy/article/ ...
- Codeforces 946 B.Weird Subtraction Process
B. Weird Subtraction Process time limit per test 1 second memory limit per test 256 megabytes inpu ...
- k8s之nginx-ingress、 Daemonset实现生产案例
上一篇中用node ip + 非80端口,访问k8s集群内部的服务.实际生产中更希望用node ip + 80端口的方式,访问k8s集群内的服务. # 修改mandatory.yaml中创建控制器部分 ...
- luogu P3119 [USACO15JAN]草鉴定Grass Cownoisseur
题目描述 In an effort to better manage the grazing patterns of his cows, Farmer John has installed one-w ...