享用同种系统问题&问题处理反馈形式(COE)

标签:
COE,
复盘

1.升任iOS11后致的转变

正如为2014/三月份的邮件。

 1. 1升格后,发现某拥有tableView的界面错乱,组间距同contentInset错乱,因为iOS11遇UIViewController的automaticallyAdjustsScrollViewInsets属性被撤废了,因而当tableView超出安全区域时,系统活动会调整SafeAreaInsets值,进而影响adjustedContentInset值


// 有些界面以下使用代理方来安,发现并从未立竿见影

– (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;

– (CGFloat)tableView:(UITableView *)tableView
heightForFooterInSection:(NSInteger)section;

//
这样的规律是坐前面只是实现了冲天的代办方,却不曾落实View的代理方,iOS10与以前这么写是从未有过问题的,iOS11敞开了行高估摸机制引起的bug,由此有以下几栽缓解形式:

// 解决办法同样:添加实现View的代办方,唯有实现上面四只点子,方法
(CGFloat)tableView: heightForFooterInSection: 才会合立竿见影

– (UIView *)tableView:(UITableView *)tableView
viewForFooterInSection:(NSInteger)section {

return nil;

}

– (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger)section {

return nil;

}

// 解决办法二:直接采纳tableView属性举办设置,修复该UI错乱

self.tableView.sectionHeaderHeight = 0;

self.tableView.sectionFooterHeight = 5;

[_optionTableView setContentInset:UIEdgeInsetsMake(-35, 0, 0, 0)];

// 解决模式三:添加以下代码关闭估量行高

self.tableView.estimatedRowHeight = 0;

self.tableView.estimatedSectionHeaderHeight = 0;

self.tableView.estimatedSectionFooterHeight = 0;

 

1.2 假使以了梅森(Mason)ry 举办布局,就要适配safeArea

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

         make.edges.equalTo(self.view.safeAreaInsets);

          } else {

          make.edges.equalTo(self.view);

        }

管理 1

1.3 对于IM的殡葬原图功能,iOS11起步新的HEIC 格式的图样,Nokia7以上设备+iOS11解除起之live照片是”.heic”格式图片,同一张live格式的图纸,iOS10发送就从未有过问题(转成为了jpg),iOS11纵充分

      微信的处理格局是平相比较同等中转成jpg格式

     QQ和钉钉的处理格局是直接压缩,即便是原图也缩减也非原图

     微信的逼格太强,没找到现成的计,我以的凡QQ 的方案

丁总,如下为摇钱树标的交易订单号再一次事故的生和处理过程。COE(Correction
Of Error)是咱当JD研发部时利用的平等栽事故&问题处理报告情势。 

2、使用Xcode9 编译后意识的问题

   2.1
发现“fastSocket”第三正值报错,具体由是少C99的峰文件,引入“#include ”即可

管理 2

 2.2 导航栏的新特征

    原生的搜索栏样式暴发变动

管理 3

左边为iOS11体制,搜索区域中度变充足,字体变充足

翻 API
后发觉,iOS11继以searchController赋值给了NavigationItem,通过性能hidesSearchBarWhenScrolling可以操纵搜索栏是否以滑的时光进行隐蔽和突显

* *

// A view controller that will be shown inside of a navigation
controller can assign a UISearchController to this property to display
the search controller’s search bar in its containing navigation
controller’s navigation bar.

@property (nonatomic, retain, nullable) UISearchController
\
searchController API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);*

// If this property is true (the default), the searchController’s
search bar will hide as the user scrolls in the top view controller’s
scroll view. If false, the search bar will remain visible and pinned
underneath the navigation bar.

@property (nonatomic) BOOL hidesSearchBarWhenScrolling
API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);

其余,UINavigationBar新增属性
BOOL值prefersLargeTitles来兑现下边的效劳,并可以经largeTitleTextAttributes来安装万分题目的文书样式。设置特别题目之后,导航栏的惊人就会出于事先的64pt变成
96pt,倘若项目面临来直接写很的万丈要隐藏导航栏之类的操作,就得适配一下

管理 4

生个界面使用到了导航栏按钮相关的frame,也发出了UI错乱,查看UI层级关系后发觉,iOS11此前是直接将按钮加至了UINavigationBar上边,而iOS11虽说是先期拿按钮加至了_UITAMICAdaptorView,再加到_UIButtonBarStackView、_UINavigationBarContentView,接着才是UINavigationBar。因而即便需要得到导航栏按钮
frame 或者 superView,这里要特别召开生适配

管理 5

管理 6

事描述

 

2月6日早上业务部门在举行回款操作时,反映是个别单用户买的标的,然而单号相同 

3.iPhone X的适配

   下充斥了Xcode9之后,第一桩事当然是在 金立X(模拟器)上了把瘾,然后编译后就意识报错了

   由于黑莓 X的状态栏是暨此外版本手机别相比特别之,因而api
变化呢相比较丰裕

   先后做了以下适配

  适配点一:项目中使用状态栏中图标判断时网络的现实性状态

管理 7

拧的代码

打印的 Log 报出以下错误: Trapped uncaught exception
‘NSUnknownKeyException’, reason: ‘[ valueForUndefinedKey:]: this
class is not key value coding-compliant for the key foregroundView.’

 

管理 8

iPhone X

 

管理 9

另外手机

以 runtime 打印其抱有属性,发现以下差距

管理,// 测试代码

#import

NSMutableString *resultStr = [NSMutableString string];

//获取指定类的Ivar列表及Ivar个数

unsigned int count = 0;

Ivar *member = class_copyIvarList([[application
valueForKeyPath:@”_statusBar”] class], &count);

for(int i = 0; i < count; i++){

Ivar var = member[i];

//获取Ivar的名称

const char *memberAddress = ivar_getName(var);

//获取Ivar的类型

const char *memberType = ivar_getTypeEncoding(var);

NSString *str = [NSString stringWithFormat:@”key = %s           
type = %s

\n”,memberAddress,memberType];

[resultStr appendString:str];

}

NSLog(@”%@”, resultStr);

 

// 其他版本的无绳电话机

key = _inProcessProvider            type = @””

key = _backgroundView              type =
@”UIStatusBarBackgroundView”

key = _doubleHeightLabel            type = @”UILabel”

key = _doubleHeightLabelContainer  type = @”UIView”

key = _currentDoubleHeightText      type = @”NSString”

key = _currentRawData              type = {超长。。}

key = _interruptedAnimationCompositeViews  type = @”NSMutableArray”

key = _newStyleBackgroundView      type =
@”UIStatusBarBackgroundView”

key = _newStyleForegroundView      type =
@”UIStatusBarForegroundView”

key = _slidingStatusBar            type = @”UIStatusBar”

key = _styleAttributes              type =
@”UIStatusBarStyleAttributes”

key = _waitingOnCallbackAfterChangingStyleOverridesLocally  type = B

key = _suppressGlow                type = B

key = _translucentBackgroundAlpha  type = d

key = _showOnlyCenterItems          type = B

key = _foregroundViewShouldIgnoreStatusBarDataDuringAnimation  type =
B

key = _tintColor                    type = @”UIColor”

key = _lastUsedBackgroundColor      type = @”UIColor”

key = _nextTintTransition          type =
@”UIStatusBarStyleAnimationParameters”

key = _overrideHeight              type = @”NSNumber”

key = _disableRasterizationReasons  type = @”NSMutableSet”

key = _timeHidden                  type = B

key = _statusBarWindow              type = @”UIStatusBarWindow”

// iPhone X

key = _statusBar ; type = @”_UIStatusBar”

// 因此可见黑莓X的状态栏是多嵌套了一致重叠,多收获一回等即可,最后适配代码为:

NSArray *children;

// 不能用 [[self deviceVersion] isEqualToString:@”iPhone X”]
来判断,因为vivo X 的模拟器不会师回到 三星 X

if ([[application valueForKeyPath:@”_statusBar”]
isKindOfClass:NSClassFromString(@”UIStatusBar_Modern”)]) {

children = [[[[application valueForKeyPath:@”_statusBar”]
valueForKeyPath:@”_statusBar”] valueForKeyPath:@”foregroundView”]
subviews];

} else {

children = [[[application valueForKeyPath:@”_statusBar”]
valueForKeyPath:@”foregroundView”] subviews];

}

故症状

3.2缓解者题材后项目走起发现,整个app界面上下各空出大约40pt的莫大

管理 10

会晤发现底部 UITabBar
是高出一些惊人,查看层级关系后发觉,同样是由于安全区的缘故,UITabBar
中度由49pt变成了83pt,由此这里呢借使本着小米 X 及其模拟器进行适配

徐夫明查看通过数据库总结订单,发现在起34笔画这样的交易,只爆发17只单号,即每2笔市并用1独单号。 

3.3:OPPO X 只发 faceID,没有touchID,如果in的使用来下到 touchID 解锁的地点,这里而因机型举办对应的适配

生的影响

3.4:此前来偷懒的平素用20代表状态栏中度,那多少个坑且要经还得到状态栏中度

       CGRectGetHeight([UIApplication
sharedApplication].statusBarFrame)

连续支付当付出成功后会面回调我们系,然后大家的网会因订单号更新订单也已经开。由此,当某2笔市并用一个单号时,当内同样笔画完成开发,会又更新及时2笔交易也已开发。 

3.5:可是摩托罗拉 X更充足之坑是屏幕的适配

先是看下屏幕尺寸

管理 11

及时张图反映出累累信:

红米 X的增幅尽管同7是如出一辙的,可是中度差不多起145pt

应用三倍图是着重,而且貌似认为肉眼所能所能认得其它最高的屏幕密度是300ppi,三星X已达标458ppi(查证发现Samsunggalaxy连串之屏幕密度是522ppi)

在计划方,苹果官方文档暴发明确要求,下边结合图例举行验证:

管理 12

显出的宏图布局要求填写满所有屏幕

管理 13

填满的又倘若留意控件不要让死圆角和传感器部分所遮挡

管理 14

管理 15

 

安区域以外的片不允许生另与用户交互的控件

面立张图外涵盖消息有点多

脑袋导航栏不予许举行用户交互的,意味着下边就有限种状态 Apple
官方是勿允的

管理 16

管理 17

底层虚拟区是替了传统home键,中度为34pt,通过达成滑动而呼起多任务管理,考虑到手势争持,这部分吗是勿同意生其它可相互的控件,不过设计的背景图如盖到不安全区域

状态栏在非安全区域,文档中吗提到,除非可以经隐藏状态栏给用户带来至极的值,否则极拿状态栏还为用户

重复使用现有图片时,注意长宽比差距。BlackBerry X 与常规 Nokia的屏幕长宽比不同,因而,全屏的 4.7 寸屏图像于 vivo X
上会现出裁切或适配宽度呈现。所以,那片之视图需要基于设备做出适配。

管理 18

专注类似占位图的适配

处理过程描述

3.6:设备音讯

if ([deviceString isEqualToString:@”iPhone10,1″])  return @”iPhone
8″;

if ([deviceString isEqualToString:@”iPhone10,4″])  return @”iPhone
8″;

if ([deviceString isEqualToString:@”iPhone10,2″])  return @”iPhone 8
Plus”;

if ([deviceString isEqualToString:@”iPhone10,5″])  return @”iPhone 8
Plus”;

if ([deviceString isEqualToString:@”iPhone10,3″])  return @”iPhone
X”;

if ([deviceString isEqualToString:@”iPhone10,6″])  return @”iPhone
X”;

 

详细突显参考链接吧, 其他非多说了.

-12月6日10:00
业务部门反映在个别个用户购买之标的,可是单号相同

适配iOS11&金立X的有的坑

http://www.cocoachina.com/ios/20170921/20623.html

http://www.jianshu.com/p/26fc39135c34

http://www.jianshu.com/p/efbc8619d56b

http://www.jianshu.com/p/efbc8619d56b

http://www.jianshu.com/p/efbc8619d56b

http://blog.csdn.net/keep_moving31038/article/details/77685591

http://blog.csdn.net/u013263917/article/details/72895728

https://mp.weixin.qq.com/s/mpjMa-ZfftuG5rR6OApC5A

http://www.jianshu.com/p/a6e5cc20a008

https://github.com/XuYang8026/UniversalProject

http://www.jianshu.com/p/e97581110a59

https://www.cnblogs.com/Hakim/p/7566922.html

https://useyourloaf.com/blog/supporting-iphone-x/

-6月6日11:00
徐夫明查看通过数据库总括订单,发现于三月17日、18日、21日、22日底市中,存在34笔画这样的订单,只出17单单号,即每2笔交易共用1只单号。单笔交易均为100首。

-四月6日13:00
徐夫明发现题目,订单声明订单号不是主键,同时,当时底订单号转规则是以规范到秒时格式命名,导致同秒暴发的市的订单号又。(此生成规则以六月22日曾变更为日期+5个本机数的法子)

-3月6日17:00
业务部门对用户承诺,会对及时34画交易逐三次款。

-10月6日20:00
张国战更凑巧订单表表结构,撤废自增的标识列主键,将订单号要为主键。

-12月7日10:00
张国战、徐夫明更改影响到之主次,包括PC端和无线端的交易、后台订单管理等模块,并召开测试。

-五月10日19:00 准备及丝。 

累工作

任务名称

任务概述

负责人

完成时间

完成情况

数据库梳理

对现有数据库设计进行系统梳理,对于不合理的设计,给予改正。

张国战

11月17日

在进行

加强代码的Review工作

对于提交的代码进行严格的代码review,确保提交代码的质量以保证生产

张国战、徐夫明、王栋

 

以后会陆续执行

 

【后记】这就是我们平时说的“复盘”。复盘,围棋术语,也如“复局”,指对局截止后,双方旗手把刚的博弈再复演一整整,这样好中地加剧对这盘对弈的映像,也得搜寻来双方攻守的尾巴,是增进协调水平的好形式。联想公司之田间管理着吗推荐了复盘那种艺术,并当联想之老三可怜方法论之一。当一个人会复盘之后,他于好之办事就是碰面暴发深入的认识跟想到,具有同样栽惊人之直觉。就好于纷繁复杂的情景受到一眼抓住关键所在,找有解决问题之计以及路线。

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注