小弟是一个小程序员,近来遇到一个惊天BUG  求解。
BUG 是这样的  界面上有个UITableView 但是有时候在把这个界面从视图上删除  或者只是把tableview从界面删除 让他=nil,在转屏的时候就会崩溃,(不转屏的话正常使用),
最极端的用例是,挂起一个控制器,在初始化方法中初始化一个tableview,都不加载到视图上,当把这个挂起的视图 取消掉之后,再转屏依旧崩溃,(这个BUG在模拟器每次都出现,真机上有时候出现,但是比较少)

解决方案 »

  1.   

    求问是否是我设置xcode有问题,还是我内存有问题?BUG 崩溃在这里 
    *** -[UITableView _handleDeviceOrientationChange:]: message sent to deallocated instance 0xc3d2e00
      

  2.   

    你是否启用了ARC机制,崩溃是在IOS几上出现的?
    旋转相关事件是否用了释放操作?
      

  3.   

    使用ARC  iOS6,7 都出现过
      

  4.   

    楼主你竟然敢使用ARC?整个工程是不允许使用ARC的,只有个别类可以用用。否则你的不确定问题会很多!
      

  5.   


    请问整个工程使用ARC会存在什么不确定问题?一直整个项目都是ARC的飘过~~~~~~
      

  6.   

    为什么要=nil,暂时隐藏掉不行么
      

  7.   


    卧槽,你这是从哪来的理论啊,我们所有的工程大大小小30多个,全是ARC. 也没见有什么问题。
      

  8.   

    现在ARC是主流了吧,我全用ARC的
      

  9.   

    message sent to deallocated instance 0xc3d2e00
    这个错误很明显啊,僵尸对象,就是说你给一个已经被释放掉的对象(deallocated)发消息,当然会出错了,可以根据运行时的进程id和错误提示给出的内存地址(0xc3d2e00)跟踪到大概是那一行出问题,用xcode自带的profile分析工具的僵尸模式也可以定位到哪一行
      

  10.   

    我们曾经遇到过类似情况,主要是present了一个UIViewController之后就崩溃。后来的解决办法是在presenting view controller中使用一个成员,保留对presented view controller的引用,以保证前者在被present之后不会被释放。其实这个事情也是莫名其妙的,而且只在部分版本的SDK中会出现。但将其拥有权定义为presenting VC所有就没有再出现过。