本文转载至 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个数是这样给的:

  1. return [self.addsArray count]<5 ? [self.addsArray count] + 1 : [self.addsArray count];

在删除的时候先删除数据源,然后做删除列表刷新界面操作,但是这样会报出如上的错误。

这个错误的意思是说:我删除之前有5个section,删除之后section数量不变(由于我需要重现添加新地址这个section就导致section数量不变)。这是矛盾的,所以xcode就给我报错了。

我的解决办法是:定义了一个局部变量sectionCount,未作删除操作时,它的数量就是

  1. [self.addsArray count]<5 ? [self.addsArray count] + 1 : [self.addsArray count];

再删除操作时是这样的:

  1. BOOL success = [[DataCenter singleton] deleteAddressFromeDB:userAdds.user_id
  2. withAddressId:userAdds.address_id];
  3. [self.addsArray removeObjectAtIndex:deleteSection];
  4. sectionCount = [self.addsArray count];
  5. [addressTable deleteSections:[NSIndexSet indexSetWithIndex:deleteSection]
  6. withRowAnimation:UITableViewRowAnimationFade];
  7. sectionCount = sectionCount+1;
  8. [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. 1. id pp = [vc performSelector:@selector(presentingController)];
  2. 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开发---- 开发错误汇总及解决方法的更多相关文章

  1. 移动端H5开发遇到的问题及解决方法

    本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...

  2. 内容分享-迅为IMX6开发板编译问题及解决方法

    [经验分享]IMX6开发板编译问题及解决方法本文转自迅为IMX6开发板售后讨论群,分享给大家~ 物理主机 win10 64 位专业版.虚拟机 VM12 Pro.开发环境采用迅为提供的开发环境: Ubu ...

  3. 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法

    错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...

  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. ...

  5. [代码]--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. ...

  6. Hadoop常见错误问题及解决方法总结二

    问题导读:1.遇到问题该如何排除错误?2.看不到namenode的可能原因是什么?3.地址占用该如何解决?4.could only be replicatied to 0 nodes, instead ...

  7. android studio 错误汇总以及解决办法

    android studio 错误汇总以及解决办法  参考 https://www.jianshu.com/p/7c7de6562231 问题1. Error:Execution failed for ...

  8. coreseek常见错误原因及解决方法

    coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...

  9. android 真机调试出现错误 INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法。

    关于这个神奇的 内存不够错误的通常解决方法,网上大把,建议大家在尝试过了网上的方法后再来尝试下我的这种方法. 编译工具: android studio 测试真机:米 2 调试的时候出现:INSTALL ...

随机推荐

  1. 2017.8.2 Noip2018模拟测试赛(十八)

     日期: 八月二日  总分: 300分  难度: 提高 ~ 省选  得分: 40分(又炸蛋了!!) 题目列表: T1:分手是祝愿 T2:残缺的字符串 T3:树点涂色 赛后心得: 哎,T1求期望,放弃. ...

  2. SqlLite 安装与使用

    一.安装文件 官方下载地址: http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 选择要下载的类库文件:sqli ...

  3. SQL2005:已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行.

    原文发布时间为:2008-08-04 -- 来源于本人的百度文章 [由搬家工具导入] 最近使用sql server2005,已经不止一次的发生了这样的错误.具体是怎么出来的我不清楚,其表现为:数据库中 ...

  4. css选择器浅谈

    css选择器有很多,种类的话总结起来有5种.即: id选择器,class选择器,elements选择器,级联选择器,相邻选择器. 前三个没什么好说的,分别是id,class和标签的选择,注意选中对象的 ...

  5. node总结--回调函数阻塞和非阻塞代码实例

    阻塞代码实例: var fs = require("fs"); var data = fs.readFileSync('input.txt'); console.log(data. ...

  6. LeetCode OJ--ZigZag Conversion

    https://oj.leetcode.com/problems/zigzag-conversion/ 将字符串Z形字排列后,再重新一行一行输出. 可以找到每一行字符位置的规律,然后填充进去. 敲代码 ...

  7. Java 基础【01】 This 用法

    业精于勤,荒于嬉:行成于思,毁于随.——韩愈 用类名定义一个变量的时候,定义的只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法. 那们类里面是够也应该有一个引用来访问自己的属性和方法纳? ...

  8. Swoole RPC 的实现

    目录 概述 实现效果 代码 小结 概述 这是关于 Swoole 学习的第七篇文章:Swoole RPC 的实现. 第六篇:Swoole 整合成一个小框架 第五篇:Swoole 多协议 多端口 的应用 ...

  9. CF768

    Codeforces Round #406 (Div. 1) A.Berzerk 考虑先手必胜态,一定是先手移动到某一个位置以后,这个位置是后手的必败态 考虑先手必败态,一定是无论先手如何移动,先手所 ...

  10. Wdatepick控件只能选当前时间以前的时间

    WdatePicker限制只能选当天,只能选以前的时间 (1)WdatePicker限制只能选以前的时间(不能选当天): onfocus="WdatePicker({startDate:'% ...