• Main Thread Checker 问题解决


    1. without a return value

    https://developer.apple.com/documentation/code_diagnostics/main_thread_checker

    NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        dispatch_async(dispatch_get_main_queue(), ^{ // Correct
            self.label.text = [NSString stringWithFormat:@"%lu bytes downloaded", data.length];
        });
    }];
    [task resume];
    

      

    let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
       if let data = data {
          DispatchQueue.main.async { // Correct
             self.label.text = "(data.count) bytes downloaded"
          }
       }
    }
    task.resume()
    

      

    2. with a return value

    https://stackoverflow.com/questions/45832155/how-do-i-refactor-my-code-to-call-appdelegate-on-the-main-thread

    static var realDelegate: AppDelegate?;
    
    static var appDelegate: AppDelegate {
        if Thread.isMainThread{
            return UIApplication.shared.delegate as! AppDelegate;
        }
        let dg = DispatchGroup();
        dg.enter()
        DispatchQueue.main.async{
            realDelegate = UIApplication.shared.delegate as? AppDelegate;
            dg.leave();
        }
        dg.wait();
        return realDelegate!;
    }
  • 相关阅读:
    Java基本数据类型
    Java位运算符
    Java条件编译
    Groovy学习笔记(二)
    Groovy学习笔记(一)
    Java开发环境搭建
    Java接口回调
    [精华][推荐]CAS SSO单点登录服务端客户端实例
    CAS SSO单点登录实例
    分布式架构springcloud+redis+springmvc+springboot
  • 原文地址:https://www.cnblogs.com/willbin/p/7883724.html
Copyright © 2020-2023  润新知