开发中遇到的奇葩问题

案例十二:

在低版本(9.0)中,自动布局如果没有明确描述确定位置(如没有left只有top size 的描述,就可能会出现left值不稳定出现严重位移)

案例十一:

pod 导入第三方Framework,里面的头文件和SDK在根目录可能是快捷方式引用,这个时候如果说报错文件头文件找不到,这个问题原因可能并不是说头文件不在或者说快捷方式导致找不到,而是可以先把项目中标红的引用先去掉,比如libstdc++6.9.0之类的过期系统库,然后重新编译,错误可能也就没有了
案例十:

UITableView出现Cell向下偏移了35,解决方案是在设置代理之前设定一下tableViewHeadView和tableViewFootView,但是似乎不能通过[uiview new]设置,要显示设定高度

https://www.jianshu.com/p/dea9c7792d4b

 

 

案例九:

正常请求接口,其它的都正常,有的接口一直会404,可能是参数不正确(字段,参数个数),服务器直接返回了404错误页面

 

案例八:

之前判断设备的网络状态,是通过状态栏的属性来的,这个方法并不是很好,而且在iPhoneX上因为设计上的不同,方法不可用,并且会导致奔溃。https://www.cnblogs.com/jukaiit/p/8145200.html http://blog.csdn.net/z040145/article/details/78871940

案例七:

在一个计时器中,计时器执行的方法有一个延迟执行的方法(延迟时间为0,背景线程执行),点击返回按钮销毁计时器时,屏幕会闪烁,并且无法正常退出,改为主线程并且不在使用prefre...函数调用后正常。

案例六:

在UICollectionView中,有一个cell计算高度的时候,由于没有内容,所以将高度设置为了CGFLOAT_MIN,结果导致下面的每个section的cell无辜消失了两个,并且不走新建的方法,因此如果一个cell存在,务必将它的高度设定为1.0及以上

案例五:

在iOS11中出现很多UITableView及UIScrollView的变化,很揪心的那种

具体讲UITableView

1.拉到底部,上拉刷新,刷新之后,显示位置总是上移(出现在内容超过一屏幕以上的情况),原因查出来是在reloadData的时候,contentSize发生了变化(变小了),具体的说就是,在计算contentSize的时候计算值偏小,而在iOS11中计算的依据,不再是通过你设定的高度来的,而是你设置的大概值是多少来计算的(这也就是所谓的在iOS11中更加顺畅的原因吧,我觉得比较坑开发),如果在代理里面加入下面几行代码就可以解决这个问题(为了保证流畅,固定行高是最佳选项!不停地变高就是变态--|||)

//([UIDevice currentDevice].systemVersion.floatValue >= 9.0f)在iOS9.0之前,像下面方法这样去实现会出现奔溃,原因应该是循环引用了可以在之前的版本返回44.0f毕竟在iOS11之前的版本不存在说上拉刷新位移的问题

1
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return ([UIDevice currentDevice].systemVersion.floatValue >= 9.0f)?[self tableView:tableView heightForRowAtIndexPath:indexPath]:44.0f;
}

 

 8 //下面两个函数如果实现在iOS11之前必须返回大于等于1.0f的值(可以显示出来的值),否者设置头和尾的时候会报错,在iOS11没问题,可以不实现(不建议实现)
 9 - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForHeaderInSection:(NSInteger)section
10 
11 {
12 
13     return [self tableView:tableView heightForHeaderInSection:section];
14 
15 }
16 
17 - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForFooterInSection:(NSInteger)section
18 
19 {
20 
21     return [self tableView:tableView heightForFooterInSection:section];
22 
23 }

案例四:

关于在iOS11布局变化的其他设定:

在UITableView中设置

if ([UIDevice currentDevice].systemVersion.floatValue >= 11.0f)

    {

        [self setEstimatedSectionHeaderHeight:CGFLOAT_MIN];

        [self setEstimatedSectionFooterHeight:CGFLOAT_MIN];

    }

在AppDelegate中设置

if ([[UIDevice currentDevice].systemVersion floatValue] >= 11.0)

    {

        if (@available(ios 11.0,*))

        {

            UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

        }

    }

 

案例三: 

for (LibraryPhotoObject * __block photoObject in functionObject.photoObjects) 像这种在for里面写上__block的用法,会导致其他引用了这个对象的数组无法正常释放导致程序carsh

案例二:

p2 在打包给测试app测试时,证书选择老是出错提示miss啥啥啥的(xcode9),无法完成打包,原因是不可以使用xcode管理的证书(也可能是9要求使用新版证书描述文件),只要在开发网站创建新profile后下载选择该文件后即可正常打包。(如果觉得不麻烦可以使用xcode打包,但是不推荐)

p1 在xcode中,打包上传都不会报错,上传成功后(loder上传进度完成),在构建中始终不能出现构建版本,邮件提示说版本不可用由于缺少配置字段Icon什么鬼,其实是因为这个版本的Icon配置不完整,将assets里面Icon的所有值配置完善,并且在info.plist新增字段

CFBundleIconName     String      Icon

即可正常上传成功

案例一:

1.UIScrollView的contentoffset不能达到设定的大小小数位精度,比如分页中:第二页的offset计算应该是120.000323但是实际上,实际的offset可能就是120.0,所以通过offset来判断的话就会出现不相等的而条件不成立的情况,所以最好是使用整数来作为控件的frame

转载于:https://www.cnblogs.com/yuxiaoyiyou/p/7117169.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值