各类BUG - 1

收集各类诡异的BUG:

1.app installation failed


常见的解决:http://blog.csdn.net/lvxiangan/article/details/43282165 , 或者说修改BundleID为正确的。

但是有一种情况是,例如SDK升级更换了bundle包,这个时候有些包需要重签名或者其他原因也会有这种问题,表现出来的就是闪退(PP助手) 或者 压根运行不了就在Xcode报以上的错误(XY助手)。



2.The application could not be verified.


删除本机上原来安装的APP,因为安装前后的证书不一样。

或者修改bundleID也可以。






3."_OBJC_CLASS_$ xxxxxxxClass or Others", referenced from:


http://blog.csdn.net/azhou_hui/article/details/18312047

跟着上面这个文章大多可以解决,总结起来就是:

1.删除涉及问题的framework 及 bundle资源, 重新按规范路径导入

2.检查导入后的路径设置问题,还有other linking的设置值


还有可能是冲突(不同的framework含有同名库): 两种解决:

1.把其中一个修改名字

2.把引用设置成互补相干扰(内外层引用等)


如果xxxxxClass是涉及到系统的SDK的话,则要:

检查是否丢失其他系统的framework (相应补上):例如:点击打开链接




4.不进去if语句的诡异问题:

- (void)addIconWithImage:(UIImage *)subImage andTag:(NSInteger)tag
{
    
    BOOL has = false;
    
    for (id subviews in self.subviews)
    {
        if ( ((UIView*)subviews).tag == tag )
        {
            has = true;
            break;
        }
        else
        {
            [((UIView*)subviews) removeFromSuperview];
            break;
        }
    }
    
    if (has == false)
    {
        UIImageView* subview = [[UIImageView alloc] initWithFrame:self.bounds];
        [subview setImage:subImage];
        
        [self addSubview:subview];
    }

    if (has == true)
    {
        NSLog(@"Already had");
    }

}


5.CGRect 等 CG类无法导入,很诡异的


原来是Xcode6以后就会那样,只要导入<UIKit/UIKit.h>

即可以。



6.装箱的bug:

看看下面一段程序:

    NSObject* obj1 = [[NSObject alloc] init];
    NSObject* obj2 = [NSNull null];
    NSObject* obj3 = [NSObject new];
    NSObject* obj4;
    
    NSArray* arr1 = [NSArray arrayWithObjects:obj1, obj2, obj3, obj4, nil];
    
    NSLog(@"arr1 count : %ld", [arr1 count]);
输出结果是3,很明显的,最后一个obj4是一个未初始化未分配内存的“对象”,所以即使能“骗”过编译器,

但是NSArray 的方法 arrayWithObjects 会自动的消除掉obj4这个不合格对象。


再来看看,如果这样呢?

    NSObject* obj1 = [[NSObject alloc] init];
    NSObject* obj2 = [NSNull null];
    NSObject* obj3 = [NSObject new];
    NSObject* obj4;
    
    NSArray* arr1 = @[obj1, obj2, obj3, obj4];
    
    NSLog(@"arr1 count : %ld", [arr1 count]);

编译一遍,能通过,但是运行一次,报错了,报的错是obj4是非法的nil类型。


这个就是为啥面对不确定的对象的时候不建议用装箱的原因了。



待续...



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值