美文网首页iOS开发指南
-[__NSCFNumber _accessibilityVie

-[__NSCFNumber _accessibilityVie

作者: Jimmy_P | 来源:发表于2018-07-02 16:39 被阅读223次

    先给懒癌晚期及其阅读恐惧症童鞋先贴下解决方法

    继承于 UITableView 的class 不能定义 以下属性
    //@property (nonatomic, assign) NSInteger index;
    
    只能用
    @property (nonatomic, copy) NSString *index;
    或者
    @property (nonatomic, assign) NSInteger currentIndex;
    

    今天我们新版的App出现一个很诡异的bug
    首页加载的时候会出现这个crash
    堆栈很奇怪 定位到了main函数
    而且全局断点无效

    测试和开发一开始都没有找到重现路径
    国内外的资料找了一天都没什么头绪
    就是这时同事看到accessibility 这个单词联想到是否跟iOS系统自带的辅助功能有关
    于是抖机灵的打开了 设置-通用-辅助功能-(旁白或者语音-双指下滑朗读选项)
    然后在我们app首页启动辅助功能 就重现了这个crash路径和信息

    就在我们以为找到了路径能解bug的时候又傻逼了
    一个个界面屏蔽
    排除了一个下午没排除到具体的问题
    最后才定位在
    一个自定义的UITableView 用

    [self.view addSubView: [tableViewClass alloc] init]];
    

    不进行任何初始化 然后调用辅助功能就会crash

    于是乎用runtime把UITableView类所有成员变量打印出来
    Runtime基本介绍

     unsigned int iVarCount;
        
        Ivar *iVarList = class_copyIvarList([UITableView class], &iVarCount);
        
        for (int i = 0; i < iVarCount; i++) {
            
            Ivar aVar = iVarList[i];
            
            NSLog(@"%s",ivar_getName(aVar));
        }
    /*
    
    .270772  _rowData
    .270895  _rowHeight
    .271007  _sectionHeaderHeight
    .271166  _sectionFooterHeight
    .271442  _estimatedRowHeight
    .271567  _estimatedSectionHeaderHeight
    .271703  _estimatedSectionFooterHeight
    .271825  _visibleBounds
    .271975  _subviewManager
    .272076  _visibleRows
    .272168  _visibleCells
    .272341  _templateLayoutCells
    .272469  _indexPathBeingCreated
    .272635  _firstResponderIndexPath
    .272918  _firstResponderView
    .273159  _firstResponderViewType
    .273518  _reusableTableCells
    .303977  _nibMap
    .304102  _nibExternalObjectsTables
    .304203  _headerFooterNibMap
    .304289  _headerFooterNibExternalObjectsTables
    .304437  _topSeparator
    .304540  _extraSeparators
    .304635  _visibleHeaderViews
    .304763  _visibleFooterViews
    .304853  _reusableHeaderFooterViews
    .304997  _highlightedIndexPaths
    .305251  _selectedIndexPaths
    .305517  _swipedIndexPath
    .305757  _highlightedSpringLoadedIndexPath
    .305988  _pendingSelectionIndexPath
    .306243  _pendingDeselectionIndexPaths
    .306465  _newContentView
    .306702  _deleteAnimationSupport
    .306981  _reorderingSupport
    .307231  _backgroundView
    .307460  _clearBlendingView
    .307705  _wrapperView
    
    
    
    .308015  _index
    
    
    
    .308280  _tableHeaderBackgroundView
    .308572  _tableHeaderView
    .308833  _tableFooterView
    .309010  _countLabel
    .309535  _sectionIndexTitlesForTableView
    .309802  _indexOverlayIndicatorView
    .310196  _indexOverlayTimer
    .310547  _indexOverlayIndicatorEventIgnoreTimer
    .310699  _currentIndexTitleIndex
    .310905  _indexOverlaySelectionView
    .311554  _tableReloadingSuspendedCount
    .311869  _sectionIndexMinimumDisplayRowCount
    .312745  _updateAnimationCount
    .313065  _lastFloatingSection
    .314186  _insertItems
    .314538  _deleteItems
    .317482  _reloadItems
    .318338  _moveItems
    .319139  _separatorColor
    .319308  _darkenedSeparatorColor
    .319508  _separatorTopShadowColor
    .319770  _separatorBottomShadowColor
    .320000  _separatorEffect
    .320275  _accessoryBaseColor
    .320615  _checkmarkColor
    .320829  _sectionBorderColor
    .321132  _indexColor
    .321425  _indexBackgroundColor
    .321661  _indexTrackingBackgroundColor
    .321918  _defaultSectionIndexTitles
    .322157  _swipeActionController
    .322353  _swipeDeletionShadowUpdateIdentifiers
    .322632  _swipeGestureRecognizer
    .322842  _swipeToDeleteGobblerGestureRecognizer
    .323056  _swipeToDeleteCell
    .323311  _updateCount
    .323524  _shadowUpdateCount
    .323808  _revertingShadowUpdateCount
    .324104  _displayingCellContentStringIndexPath
    .324302  _longPressGestureRecognizer
    .324558  _upArrowLongPressGestureRecognizer
    .324774  _downArrowLongPressGestureRecognizer
    .325045  _upArrowTapGestureRecognizer
    .325245  _downArrowTapGestureRecognizer
    .325458  _longPressAutoscrollTimer
    .325727  _longPressAutoscrollDirection
    .326061  _sectionContentInset
    .326450  _sectionBorderWidth
    .326691  _sectionCornerRadius
    .326956  _currentTouch
    .327230  _cellClassDict
    .327446  _headerFooterClassDict
    .327733  _topPadding
    .328026  _bottomPadding
    .328300  _separatorInset
    .328505  _updateCompletionHandler
    .328712  _deferredEditingHandler
    .328974  _hiddenSeparatorIndexPaths
    .329129  _tentativeCells
    .329887  _tentativeHeaderViews
    .330336  _tentativeFooterViews
    .330775  _clientGesturesRequiringTableGesturesToFail
    .331072  _currentUpdate
    .331813  _shadowUpdatesController
    .332116  _preReloadVisibleRowRange
    .332506  _preReloadFirstCellOffset
    .332798  _lastWindow
    .333015  _focusedViewType
    .333177  _contentFocusContainerGuide
    .333452  _constants
    .333647  _targetIndexPathForScrolling
    .333843  _targetOffsetToIndexPathForScrolling
    .334062  _indexRetargetFeedbackGenerator
    .334306  _sectionChangeFeedbackGenerator
    .334557  _reorderFeedbackGenerator
    .334768  _performUsingPresentationValuesCount
    .334927  _prefetchDataSource
    .335167  _prefetchContext
    .335368  _coalescedContentSizeDelta
    .335531  _tableFlags
    .335816  _dragDelegate
    .336066  _dropDelegate
    .336295  _focusedCellIndexPath
    .336487  _focusedCell
    .336725  _indexPathToFocus
    .336980  _dragController
    .337142  _dropController
    .337628  _placeholderContexts
    .337862  _dragSourceDelegate
    .338106  _dragDestinationDelegate
    .338290  _cachedSectionIndexBarInsets
    */
    

    发现系统UITableView其中有一个私有属性Index是String类型的 所以由于各种原因(苹果的bug) 会导致app崩溃 而且没有任何信息

    找了很多资料找不到解决办法
    因此和大家分享一下我们的解决方法
    如果帮助到大家可以点个赞
    鼓励up主继续创作
    么么哒 (*  ̄3)(ε ̄ *)

    相关文章

      网友评论

        本文标题:-[__NSCFNumber _accessibilityVie

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