新建一个uiview作为uitextfield的inputview,在此uiview中,加入一个uidatepickerview,此uiview是为了需求上的扩展,会有加入其它视觉元素的可能。
crash详情:
2016-05-12 10:07:44.437 LiveChild[2722:1916804] used: 374796288 free: 26144768 total: 400941056
2016-05-12 10:08:08.121 LiveChild[2722:1916758] Received memory warning.
2016-05-12 10:08:16.608 LiveChild[2722:1916758] *** Assertion failure in -[UIPickerTableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3512.60.7/UITableView.m:10594
2016-05-12 10:08:16.620 LiveChild[2722:1916758] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource is not set'
现象:重复几次弹出uidatepicker、再关闭的情况,会导致这个crash。
分析过程:
1、曾一度以为是因为内存不够,导致datepicker不能显示,但在之后的几次log中,没有发现Received memory warning,暂且排除这个原因。
2、google了下,友人说需要设置好所有datepicker相关操作后,再将datepicker add到当前inputview的subview中,试了下,无功而返
3、又有友人说在layoutsubviews里addsubview,没有用
4、友人说setdate第一次是ok的,第二次就crash掉,咦,很相似哦~ 在willDisplay时,产生了crash,兼之在调试过程中(有断点)并未产生crash,且zombies在跑的过程中没有crash(神啊,原因是zombies跑真机设备会有延时啊),故而,通过延时setdate的方式,发现4、5次又crash了,还是不行,连zombies都不行,真是要绝望了啊~~
5、最后,既然这是一个datepicker因为多次设置而导致的问题,那么我尝试每次uitextfield获取到焦点(第一响应者)后,即新建一个包含uidatepicker的uiview,没有再crash了。
实际上,在使用uidatepicker的过程中,并未做过多处理,仅仅设置了uidatepicker的一些常用属性,然后在信息显示页面和信息编辑页面多次切换,多次setdate就产生了问题,猜测是苹果的问题(羞~),我只是猜猜....