• (工作经验总结一二)队列--多个main的原因


    1,项目创建最好有一个自己的继承于UIViewController的类,并且其他控制器继承这个控制器,灵活性较大,例如:

    要给项目每个页面添加截图或用户操作轨迹记录等,这样就省去了到每个页面添加的麻烦,在这个父类中写逻辑即可!

    2,不用所有的UI元素都在控制器里self.view addsubview,写多了确实很晕,逻辑与试图参合!自定义view类,加到控制器里解决.

    3, 执行网络请求异步任务过多会耗费资源,最好用到队列   参考:http://blog.csdn.net/totogo2010/article/details/8013316
      这里介绍专业级项目中用到的方法
      结构:
      1个继承NSOperation的类   MyOperation
      1个继承NSObject的管理类,单例 TaskManager
     
     
     NSOperation就和java.lang.Runnable接口很相似。和Java的Runnable一样,NSOperation也是设计用来扩展的,只需继承重写NSOperation的一个方法main。相当与java 中Runnalbe的Run方法。然后把NSOperation子类的对象放入NSOperationQueue队列中,该队列就会启动并开始处理它。

    //执行任务的类

    @interface MyOperation : NSOperation

    @implementation MyOperation

    //重载父类方法,队列自动执行main
    - (void)main {
        @autoreleasepool {
            @try {
                //主要代码
                NSLog(@"+++++++++++++++++++++++++++++++++++++============================");
            }@catch (NSException *e) {
                //异常处理
            }@finally {
                //一般不写代码
            }
        }
    }
    @end

    ////////////////////////////管理执行任务的类

    #import "MyOperation.h"

    //这里简单测试,不写单例
    @interface TaskManager : NSObject
    {
        //创建一个任务队列
        NSOperationQueue *operationQueue;
    }

    - (void)startOperation;

    @end

    - (instancetype)init
    {
        self = [super init];
        if (self) {
            operationQueue = [[NSOperationQueue alloc]init];
            //同时执行的任务数,主要就是为了它
            operationQueue.maxConcurrentOperationCount = 1;
        }
        return self;
    }

    - (void)startOperation
    {
        MyOperation* op = [[MyOperation alloc]init];
        [operationQueue addOperation:op];
    }

    //使用处调用

     TaskManager *manager = [[TaskManager alloc]init];
        [manager startOperation];

  • 相关阅读:
    javascript简繁转换函数
    在嵌套的repeater中加ItemDataBound事件
    asp.net url重写方法和步骤
    打开,另存为,属性,打印"等14个JS代码
    php中global的用法
    ini_get
    PHP学习笔记
    PHP isset()与empty()的使用区别详解
    PHP符号说明
    html禁止清除input文本输入缓存
  • 原文地址:https://www.cnblogs.com/huntaiji/p/3976467.html
Copyright © 2020-2023  润新知