IOS异常记录

1. *** unrecognized selector sent to

1.*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILabel labelWithType:]: unrecognized selector sent to instance 0xb5a3700'

*** First throw call stack:

       错误原因:该类没有找到该方法,调用错误。

      遇到的四种原因:  

       <1>确认文件没问题,方法存在。然后检查编译文件列表(bulid phases -> complie sources)里面有没有该文件,如果该文件没有被编译,增加它。文件没有被编译,故该文件的方法都不能别识别。

       <2>unrecognized selector sent to class,特别注意下这里面的class,主要原因是类别调用错误的方法造成的(例如该变量获取了一个obj,但是该obj本应该是A类,实际上却获取了B类的值,故该obj肯定不能正确的响应A类的方法)。打印调用方法的obj,查看该Obj的类名,然后查看该类是否存在该方法,如果不存在,实现它,或者删除对该方法的调用。

              <2.1>对于代理调用回调方法可以这样使用,防止出现这种崩溃.

          if ([delegate respondsToSelector:@selector(selector)])

          {

              [delegate selector];

          }

       <3>unrecognized selector sent to intance问题主要是临时变量引起的。调用方法的临时变量已经在其他的地方被释放,故此时调用它的方法或造成崩溃。检查该变量在调用其实例方法时是否可能已经被释放了。

       <4>遇到一个数据库实体调用它的实例方法时报这个错误的。

              数据库实体初始化完成之后,不能识别它的实例方法,只要调用就会崩溃。

             最终定位为数据库中查看该表的属性,发现表名称是正确的,但是关联的类名是NSManagedObject,而非正确的类名。所以,生成数据库表相应的实体类时,可以Editor->Created NSManagedObject Class...创建实体类,这样就会自动把表和类进行关联。如果手动创建的实体类是不会关联的,需要手动关联,否则就会出现类似的错误。


2.Undefined symbols for architecture i386:
        发生这种错误通常是project.pbxproj这个文件引起的,尤其在多人合作开发的时候,svn提交不规范可能导致project.pbxproj发生错误,导致文件的引用不在project.pbxproj文件中。
         xcode项目import文件会根据project.pbxproj来查找,查找不到文件的引用则会有上述的错误。
         解决方法点击工程,在主界面中点击Build Phases,根据提示信息“XXX”来判断缺少什么文件,一般如果缺少自定义的文件,XXX会是缺少的类名,那么就在Complie Sources中加入该文件。如果缺少类库,则在Link Binary With Libraries中加入该类库。

         <1>在编译RegexKitLite的时候,报错类似错误。

         需要在在项目的编译设置中找到Other Linker Flags,然后在后面字段空白处双击,添加“-licucore”就可以了,引用正则框架必须打开此开关。

         -licucore,注意不要打错,打错了会报错误:clang: error: no such file or directory: '-licucore

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值