zoukankan      html  css  js  c++  java
  • iOS app 在后台挂起时再进入闪退问题

            思路1:估计是内存问题,开启僵尸模式;监听控制器的内存,方案有3

       1. aop,对 UIViewController 的 init 和 dealloc 做运行时方法更换就行,导入 aop 库更简单,因为当前项目没用到,因此不选用该方案

             2. category:为 UIViewController 添加类目,实现 init 和 dealloc 方法。和 js 交互有自定义键盘,类目方式会导致闪退,故也不能选用改方案

       3. inherit:新建一个控制器继承于 UIViewController,重写 init 和 dealloc 方法,监听内存创建和释放,让项目所有最父级的控制器继承于该控制器:会污染项目,幸好项目只有两个基类

    #import "ARCViewController.h"
    
    static int arc = 0;
    
    @interface ARCViewController ()
    
    @end
    
    @implementation ARCViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    - (instancetype)init {
        
        if (self = [super init]) {
            
            arc++;
            NSLog(@"-------------- arc: %i - uiviewcontroller init: %@ ------------------", arc, NSStringFromClass([self class]));
        }
        return self;
    }
    
    - (void)dealloc {
        
        arc--;
        NSLog(@"-------------- arc: %i - uiviewcontroller dealloc: %@ ------------------", arc, NSStringFromClass([self class]));
    }

    后台闪退问题:
        1. 从Appdelegate进入程序开始,后台挂起程序后,从后台进入挂起后,若再被系统回收了内存,再次进入正常是会重启,若到达引用跟视图间,控制器出现了内存问题,会导致重启闪退
        页面有内存溢出,内存问题导致的僵尸对象,然后程序正常重启引用到了该对象,导致重启闪退:监听所有页面的创建和销毁,用基类或者aop都行。
        2. 自定义注册通知。注册远程通知还需要加上  [application registerForRemoteNotifications];,但这不能重复注册,也是导致闪退的原因,判断状态再注册
        if (![application isRegisteredForRemoteNotifications]) {
            
                 [application registerForRemoteNotifications];
            }

        

  • 相关阅读:
    Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接(一)
    yaml中的锚点和引用
    Kafka查看topic、consumer group状态命令
    手把手教你写一个脚手架
    可视化拖拽组件库一些技术要点原理分析(三)
    《带你入门前端工程》开源了
    可视化拖拽组件库一些技术要点原理分析(二)
    实验 7: OpenDaylight 实验——Python 中的 REST API 调用
    实验 6:OpenDaylight 实验——OpenDaylight 及 Postman 实现流表下发
    实验 5:OpenFlow 协议分析和 OpenDaylight 安装
  • 原文地址:https://www.cnblogs.com/pruple/p/9284808.html
Copyright © 2011-2022 走看看