美文网首页
改 bug 的一些方法

改 bug 的一些方法

作者: 活最好的自己 | 来源:发表于2018-06-21 21:51 被阅读16次

    1. 高度或间距问题

    1. 改 collectionview 的间距, 可以把layout:sizeForItemAtIndexPath: 方法返回的值, 全部改成无限大或无限小(先不管 section)
    2. 如果依旧没什么用, 可以把layout:insetForSectionAtIndex:方法的值全部改成无限大或无限小(先不管 section), 也就是不计后果的那种.

    2. 重叠问题

    A页面继承于 B 页面, A 的页面明显超出了 B 的位置 ===> 全局搜索 super 方法, 只有initWithFrame:方法中有 super, 因此需要在创建 A 或 B 时, 各自单独调用initWithFrame:中的方法 ==> 原因是 A 继承了 B 的视图, 自己也创建了一份, 但是只给 A 的视图赋值并更新位置, 没有给 B 的视图赋值和更新位置.

    3. 按钮显示后又消失问题

    1. 可以在按钮懒加载创建的地方插入断点, 或者在当前类中, 重写 get 方法, 在 get 方法中插入断点, 在 self. 代码处, 被调用, 但是没有发现被移除或被隐藏的地方.
    2. 由于是 UIButton, 可以在 UIButton的分类中, 重写 dealloc方法(分类中的方法会优先被调用), 确定当前视图是否被隐藏或被移除掉. ===> 结果是它的 dealloc 方法被调用了多次, 而且从调用关系结构图中发现, 其父类的 dealloc 方法也被调用了, 而且是在数组中被移除的. ===> 可以推断, 按钮消失的过程与父视图的被移除也是有关的.

    4. 循环引用的两种常见情况:

    1. block 强引用
    1. copy 的 block  属性里面含有 self
    2. copy 的 block  属性里面含有 带有下划线的强应用
    3. A对象拥有的 block 属性里面调用了 A 对象
    4. A对象的 delegate 是 strong 属性(如CABasicAnimation的 delegate 是强引用, 可以参考http://www.chjsun.top/2017/01/04/animation/animation1/)
    
      [_loadingView setLoadingFailedBlock:^{
                //
                weakself.loadingView.hidden = NO;
                [weakself.loadingView loading];
                [weakself loadNewData];
            }];
    
    - (PTVAlbumPhotoBrowserView*)photoBrowserView
    {
        if (_photoBrowserView == nil)
        {
            _photoBrowserView = [PTVAlbumPhotoBrowserView new];
            _photoBrowserView.parentVc = self; //parentVc 是 strong 属性
        }
        return _photoBrowserView;
    }
    
    
    1. 通知
    1. addObserver:forKeyPath:options:context:方法, 没有及时的remove 掉.
    2. 通过类似方法添加代理, `[[WuKongManager sharedInstance] registerRechargeGiftPackegData:self]`, 没有及时移除.
    

    5. 定位客户问题

    1. 可以使用打点, 确定用户是否确实做了某些行为.

    相关文章

      网友评论

          本文标题:改 bug 的一些方法

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