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 ...
随机推荐
- 马士兵hadoop第三课:java开发hdfs(转)
马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...
- jQuery控件之分页控件-- kkpager v1.3使用简介
js分页展示控件,传入简单参数就能使用的分页效果控件 在线测试链接: http://pgkk.github.io/kkpager/example/pager_test.html http://pgkk ...
- luogu 1355 神秘大三角 判断点和三角形的位置关系 面积法 叉积法
题目链接 题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样 ...
- linux内核学习之四:进程切换简述【转】
转自:http://www.cnblogs.com/xiongyuanxiong/p/3531884.html 在讲述专业知识前,先讲讲我学习linux内核使用的入门书籍:<深入理解linux内 ...
- inline关键词的使用(转载)
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...
- iOS开发之手势gesture详解(二)
与其他用户界面控件交互 UIControl子类会覆盖parentView的gesture.例如当用户点击UIButton时,UIButton会接受触摸事件,它的parentView不会接收到.这仅适用 ...
- JS-禁止移动端长按页面后弹出“在浏览器打开”这个菜单
阻止浏览器的touchstart事件 document.addEventListener('touchstart', function(e) { e.preventDefault(); ...
- 树讲解——牧场行走( lca )
大视野 1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1947 Solved: 1021[Sub ...
- [Bzoj3687]简单题(bitset)
3687: 简单题 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1150 Solved: 565[Submit][Status][Discuss] ...
- ie下li标签中span加float:right不换行问题解决方案
在IE6,IE7下使用标签时,在加入右浮动样式(float:right)后,会换行的bug解决方案:bug案例:新闻列表中,为使时间右对齐,加右浮动产生换行 <ul> <li> ...