![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
swift-ioser
iOS开发工程师,热爱swift
展开
-
swift 协议方法可选
swift 协议方法可选protocol TextOptionalProtocol{ //必须实现的方法 func text() //可选实现的方法 func textOption()}extension TextOptionalProtocol{ func testOption() { print("可选协议") }}让一个类去实现这个协议class TextOptionalProtocolClass: TextOptional原创 2021-01-09 15:41:37 · 951 阅读 · 0 评论 -
swift属性包装器 propertyWrapper
swift属性包装器 propertyWrapper什么是属性包装器「propertyWrapper」?在类、结构体或者枚举的声明时使用该特性,可以让其成为一个属性包装器。如果将该特性应用在一个类型上,将会创建一个与该类型同名的自定义特性。将这个新的特性用于类、结构体、枚举的属性,则可以通过包装器的实例封装对该属性的访问。局部和全局变量不能使用属性包装器。包装器必须定义一个 wrappedValue 实例属性。该属性 wrapped value 是该属性存取方法暴露的值。大多数时候,wrapp原创 2021-01-08 15:24:02 · 434 阅读 · 0 评论 -
swift 原生json解析探究与详解
swift 原生json解析探究与详解我们先构建一个json数据struct TextJson:Codable{ let status: Int let text: String}然后我们生成json数据let makeModel = TextJson(status:10,text:"json")let jsonData = try JSONEncoder().encode(makeModel)打印一下json数据let jsonStr = String(data:jso原创 2021-01-08 11:08:16 · 648 阅读 · 0 评论 -
Operation的addDependency
我们有7个任务task1, task2, task3, task4, task5, task6, task7,要实现一个功能,task1,task2,task3执行完之后,在执行task4,task5执行完之后执行task6,task4和task6执行完之后,在执行task7let task1 = BlockOperation{ sleep(3) print("task1")}let task2 = BlockOperation{ sleep(2) print("ta原创 2020-12-21 09:51:48 · 210 阅读 · 0 评论 -
swift获取子视图的控制器
当视图层级很深的时候,如何获取当前视图的控制器?获取根视图控制器的方法方法一思路:遍历当前视图的父视图,获取控制器func responseUIViewController() -> UIViewController?{ for view in sequence(first: self.superview, next: { $0?.superview }){ if let response = view?.next{原创 2020-12-20 22:47:08 · 456 阅读 · 0 评论 -
swift之GCD的DispatchGroup
把一个task加入一个DispatchGroup有两种方式方式一: 通过enter()和leave()let group = DispatchGroup()let queue1 = DispatchQueue(label: "com.1")let queue2 = DispatchQueue(label: "com.2")let queue3 = DispatchQueue(label: "com.3")group.enter()queue1.async(){ for i in 0.原创 2020-12-20 22:42:05 · 693 阅读 · 0 评论