美文网首页
20160929 iOS项目问题总结

20160929 iOS项目问题总结

作者: 逐水而上 | 来源:发表于2016-09-29 14:28 被阅读91次
    提交APPStore审核因ipv6问题被拒

    We discovered one or more bugs in your app when reviewed on iPhone running iOS 10.0.2 on Wi-Fi connected to an IPv6 network.

    • Unable to log in
    • Internet issue
      We've attached screenshot(s) for your reference.
      经过在ipv6环境下测试问题没有复现,等待结果(重新提交二进制文件后审核通过,并没有什么问题)

    2016年10月27日,提交的新版本UI调整,再次被拒绝,原因是登录页面键盘遮挡按钮(以后注意,有输入的页面,键盘一定要能够随时收起,细节!)

    关于CollectionView

    使用storyboard创建collectionView时需要自定义header和footer,只要勾选上Section Header和Section Footer两个选项两个reuseView就会出现在storyboard里面,不需要自己去控件里拖(关键是拖也拖不进去……),分别设置好identifier,代码里面复用时要分清,虽然两个reuseView看着一样。

    关于一些UI上出现的奇怪的Bug

    一些界面的子控件并不是铺满整个屏幕,因此控件之间衔接的缝隙要多加注意,例如tableView或者collectionView和底部自定义Bar之间。
    在collectionView的cell里面有个imageView,约束什么的都做好了,可是发现显示出来图片距离上边界的距离跟设置的怎么不一样?!怎么调都调不好,最后发现是图片的contentMode设置问题,图片超出控件显示了。

    关于自定义转场的问题

    项目中用到了自定义转场(present和dimiss)弹出,但是实现后发现弹出动画会有长时间卡顿,难道presentViewController方法是异步执行的?解决办法:

    dispatch_async(dispatch_get_main_queue(), ^{
                    [self presentViewController:popupVC animated:YES completion:nil];
                });
    

    弹出后另一个controller后还想实现点击背景区域返回(dissmiss),这比单纯的点按钮返回稍微复杂,解决办法(给window添加手势):

    /*添加一个点击背景返回fromVC的手势*/
    - (void)addTapDismiss {
        UIWindow *appWindow = [UIApplication sharedApplication].keyWindow;
        UITapGestureRecognizer *tapGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)];
        [tapGes setNumberOfTapsRequired:1];
        tapGes.cancelsTouchesInView = NO;
        [appWindow addGestureRecognizer:tapGes];
    }
    - (void)handleTapBehind:(UITapGestureRecognizer *)sender {
        if (sender.state == UIGestureRecognizerStateEnded){
            CGPoint location = [sender locationInView:nil];
            if (![self.view pointInside:[self.view convertPoint:location fromView:self.view.window] withEvent:nil]){
                [self.view.window removeGestureRecognizer:sender];
                [self dismissAction:nil];
            }  
        }
    }
    
    关于统一性的问题

    不同界面会用到相同表现形式的Cell或者View,最好能够复用,以便统一管理和更改,用单独的xib或者单独的类来定义这些公共的view应该是最好的选择。

    数据格式导致的崩溃问题

    1.创建字典时因为数据来源问题致使value为nil
    2.使用三方库dateTool时的[NSDate dateWithString:serverDate formatString:ServerDateFormat]方法,传入的string为空时崩溃
    3.往一个字符串的指定位置index插入字符,如果该字符串长度为0
    4.在创建NSMutableString或者是NSMutableAttributedString时,使用initWithString方法时传入nil会崩溃

    so,we should
    • 不要过分相信服务器返回的数据格式
    • 在对数据处理上,要进行容错处理,进行相应判断之后再处理数据,这是一个良好的编程习惯

    相关文章

      网友评论

          本文标题:20160929 iOS项目问题总结

          本文链接:https://www.haomeiwen.com/subject/pawkyttx.html