小工具      在线工具  汉语词典  css  js  c++  java

swift3闭包学习

Swift学习 额外说明

收录于:93天前


class FirstViewController: TFBaseViewController {

    var ljload :LJDownLoadNetImage?  //声明
    
    
    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor.white
        self.setTopNavBarTitle("首页")
         ljload = LJDownLoadNetImage()
        self.initTest()
    }


    //MARK: 点击事件
    func buttonClick(_ sender:UIButton)
    {
        //避免循环引用,weak当对象销毁的时候,对象会被指定为nil
        //weak var weakSelf = self //对象推到,省略了ViewController
        weak var weakSelf : FirstViewController? = self  //等同与上面的表达式
        //数据回调
        ljload?.loadData({ (jsonData:String) in
            print("获取到的数据:\(jsonData)")
            
            weakSelf?.view.backgroundColor = UIColor.red
        })
       
        //let vc = TFNetImageViewController()
        //self.navigationController?.pushViewController(vc, animated: true)
    }


闭包

import Foundation

class LJDownLoadNetImage: NSObject {
   
    //闭包类型 (参数列表)->(返回值类型)
    func loadData(_ finishCallBack: @escaping (_ jsonData:String) -> ()) {
        //1. 发送异步网络请求
        //放在此处,可以不加@escaping
//         finishCallBack()
     
        if #available(iOS 8.0, *) {
            DispatchQueue.global().async { 
                print("发送异步网络请求")
                
                DispatchQueue.main.async(execute: {
                    
                    //放在此处必须要加@escaping
                    finishCallBack("jsonData")
                })
            }
        }
    }
}

控制台打印的数据

发送异步网络请求

获取数据:json数据



. . .

相关推荐

额外说明

Python调用C++方法来加速运算

cpp源代码 #include "iostream" using namespace std; class Calc { public: int add(int a, int b); }; int Calc::add(int a, in

额外说明

AD隐藏房间

在room上右键,Options->Show/Hide

额外说明

java将dxf文件转为json格式

要将DXF文件转换为JSON格式,您可以使用Java DXF解析器库。下面是一个简单的示例代码,演示如何使用Java DXF解析器库将DXF文件解析为JSON格式: import java.io.File; import java.io.IOExcept

额外说明

Failed to configure a DataSource: ‘url‘ attribute is not specified and no Reaso(附解决思路)

*************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSo

额外说明

系统日志分析: 从日志文件到关键洞察

标题 系统日志分析: 从日志文件到关键洞察 摘要 引言 正文 1. 理解系统日志的种类 2. 收集和存储日志数据 3. 使用正则表达式解析日志 4. 分析和可视化日志数据 5. 实时日志监控 6. 安全事件检测 总结 参考资料 博主 默语带您 Go to

额外说明

企业级实战——品优购电商系统开发 - 139 . 140 .141. 保存规格选项

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技am

额外说明

3.多线程(进阶)

文章目录 1.常见的锁策略 1.1乐观锁 vs 悲观锁 1.2互斥锁 vs 读写锁 1.3重量级锁 vs 轻量级锁 1.4自旋锁vs 挂起等待锁(Spin Lock) 1.5公平锁 vs 非公平锁 1.6可重入锁 vs 不可重入锁 1.7相关面试题 2.

额外说明

vue -elementUI的选择组件el-select中@change事件返回key,val

select 获得键值(key,val)的值 第一种方法 这里的value的写法是对象键值对的写法 :value="{value:item.versionid,label:item.versionName}" <el-form-item label="测

额外说明

Java讲课笔记33:多线程概述与线程创建

文章目录 零、本讲学习目标 一、进程概述 (一)进程定义 (二)三维度看待进程模型 (三)进程说明 (四)进程三种状态 1、执行态(Running) 2、就绪态(Ready) 3、阻塞态(Blocking) 二、线程概述 (一)线程定义 (二)单线程与多

额外说明

Swift 3.0字典简单学习

//1.如何定义字典 //1> 定义不可变字典:使用let修饰 //编译器会根据[]中每一个元素(数组),还是健值队(字典) //写法一 let dict3 : Dictionary<String, Any>

ads via 小工具