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
  • 相关阅读:
    react log
    valueOf()、toString()、toLocaleString()三个方法的区别
    git 多账号配置 mac和windows10 记录一下
    js执行顺序,Promise和async中的立即执行
    js事件冒泡及event的target和currentTarget的区别
    canvas 旋转时 中心点的坑
    uni app 在组件中操作 canvas 已踩坑
    js 预编译原理
    mixins 在装饰器 vue-property-decorator 中的使用
    js 面向对象和函数式编程
  • 原文地址:https://www.cnblogs.com/yaowen/p/7517736.html
Copyright © 2011-2022 走看看