zoukankan      html  css  js  c++  java
  • ios34---GDC,dispatch_once

    //
    //  ViewController.m
    //  09-掌握-GCD常用函数
    //
    //  Created by xiaomage on 16/2/18.
    //  Copyright © 2016年 小码哥. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "XMGPerson.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
    //    [self once];
        
        XMGPerson *p1 = [[XMGPerson alloc]init];
        XMGPerson *p2 = [[XMGPerson alloc]init];
        NSLog(@"%@---%@",p1.books,p2.books);
    }
    
    //延迟执行
    -(void)delay
    {
        NSLog(@"start-----");
        
        //1. 延迟执行的第一种方法
        //[self performSelector:@selector(task) withObject:nil afterDelay:2.0];
        
        //2.延迟执行的第二种方法
        //[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(task) userInfo:nil repeats:YES];
        
        //3.GCD
    //    dispatch_queue_t queue = dispatch_get_main_queue();
         dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
        /*
         第一个参数:DISPATCH_TIME_NOW 从现在开始计算时间
         第二个参数:延迟的时间 2.0 GCD时间单位:纳秒
         第三个参数:队列
         */
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), queue, ^{
            NSLog(@"GCD----%@",[NSThread currentThread]);
        });
    
    }
    
    //一次性代码
    //不能放在懒加载中的,应用场景:单例模式
    -(void)once
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{  //整个项目生命周期只执行一次,多次调用都不会执行多次
            NSLog(@"---once----");
        });
    }
    
    -(void)task
    {
        NSLog(@"task----%@",[NSThread currentThread]);
    }
    @end
    //
    //  XMGPerson.h
    //  09-掌握-GCD常用函数
    //
    //  Created by xiaomage on 16/2/18.
    //  Copyright © 2016年 小码哥. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface XMGPerson : NSObject
    
    @property (nonatomic, strong) NSArray *books;
    @end
    //
    //  XMGPerson.m
    //  09-掌握-GCD常用函数
    //
    //  Created by xiaomage on 16/2/18.
    //  Copyright © 2016年 小码哥. All rights reserved.
    //
    
    #import "XMGPerson.h"
    
    @implementation XMGPerson
    
    -(NSArray *)books
    {
    //    if (_books == nil) {
    //        _books = @[@"1234",@"56789"];
    //    }
        
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{  //只执行一次
            _books = @[@"1234",@"56789"];
        });
        return _books;
    }
    @end
  • 相关阅读:
    202006leetcode刷题记录
    二分查找详解
    并查集
    202005leetcode刷题记录
    基于地震数据的Spark数据处理与分析
    Java日志框架:logback详解
    java 多线程
    Oracle表恢复(truncate)
    关于软件开发,你老板不知道的7件事
    调用oracle 分页存储过程 返回游标数据集
  • 原文地址:https://www.cnblogs.com/yaowen/p/7517736.html
Copyright © 2011-2022 走看看