4.0 group swift

2018-11-12 17:29:53 lipengfei_1993 阅读数 533

Swift4.0 中,GCD的API更加独立,而不再是像OC一样了,所以我们经常遇到这样一种场景,某个页面需要多个网络请求才可以获得全部数据,在没有顺序要求的情况下,使用GCD Group进行线程调度是最合适的,如果存在顺序要求,需要使用信号量,信号量的具体方法在这里不讨论,下面展示如何使用Group请求多个线程网络数据:

   func get(){
        
        let queue = DispatchQueue.init(label: "getCount")//定义队列
        let group = DispatchGroup()//创建一个组
        
        //将队列放进组里
        queue.async(group: group, execute: {
            group.enter()//开始线程1
            
            let url = rootUrl + "/getDetailedQuestion.do"
            let parame:[String:AnyObject] = {
                return ["questionId":self.id]
                }() as [String : AnyObject]
            
            AlaRequestManager.shared.POST(urlString: url, params: parame, success: ({success in
              //  print(success)
                print("thread1")
                group.leave()//线程1结束
            }))
    
        })
        
        
        queue.async(group: group, execute: {
            group.enter()//开始线程2
            
            let url = rootUrl + "/getDetailedQuestion.do"
            let parame:[String:AnyObject] = {
                return ["questionId":self.id]
                }() as [String : AnyObject]
            
            AlaRequestManager.shared.POST(urlString: url, params: parame, success: ({success in
               // print(success)
                print("thread2")
                group.leave()//线程2结束
            }))
        })
        
        
        group.notify(queue: queue){
            //队列中线程全部结束
            print("end")
        }
        
        
    }
    



链接:https://www.jianshu.com/p/60a66c38f5d6

2018-05-22 18:10:49 kuangdacaikuang 阅读数 860

解决UITableView的style为group时, 8.3系统崩溃的问题

tableView的懒加载
这里写图片描述

发生崩溃的地方
这里写图片描述

崩溃原因
这里写图片描述

提示cell没有注册,但是检查发现,cell是注册的,iOS11系统模拟器运行完全没问题,iOS8.3系统模拟器运行崩溃
这里写图片描述

这个崩溃是8.3系统的重大bug!!!!!
将tableView.separatorStyle = .none,放在register注册cell的方法后面就不崩溃了

这里写图片描述

iOS8.3系统,tableView的style为group是,总是崩溃

reason: ‘unable to dequeue a cell with identifier TopicTitleCellReuseIdentifier - must register a nib or a class for the identifier or connect a prototype cell in a storyboard’

检查cell都注册过了, 果然是这个问题,调整到注册cell后面就不崩溃了

2017-12-29 13:17:53 fzhlee 阅读数 558
Swift4.0入门实例视频教程—4744人已学习
课程介绍    
201712291158262922.
    Swift4.0入门视频教程,课程内容包含Swift入门知识、数据类型(元组、Dictionary、运算符)、流程控制、函数、类与对象、扩展协议、常见概念、实用进阶、案例实战。 1、119节大容量课程:包含了Swift4.0语言大部分知识点; 2、创新的教学模式:手把手教您iOS开发技术入门,一看就懂,一学就会; 3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标; 4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间; 5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;
课程收益
    掌握Swift 4.0语言,并通过一整套实例教程,使学员掌握从生成证书、创建app、架构、开发、打包上传、提交审核等整个开发流程!
讲师介绍
    李发展更多讲师课程
    10年以上IT行业工作经验、三年以上IT行业教学经验。丰富的项目经验和授课经验,授课形式不拘一格。熟悉JAVA,iOS,Swift,平面设计、网页设计、Javascript开发等技术。代表作品:拥有百万下载量、千份五星好评的iOS应用《互动教程 for Photoshop》、《互动教程 for Xcode》、《互动教程 for Illustrator》、《互动教程 for Pages》等。
课程大纲
  第1章:入门知识
    1.iOS项目模板的介绍  6:37
    2.使用Playground学习Swift  2:55
    3.Swift语言中的常量和变量  1:53
    4.Swift的标识符和关键字  1:57
    5.Swift的表达式Expressions  1:29
    6.给Swift代码添加注释语句  2:12
    7.Swift的几个打印输出语句  1:42
    8.在控制台输出类的实例及其属性  1:42
  第2章:数据类型
    1.Swift的(Boolean)布尔类型  2:40
    2.Swift的(Int)整形类型  4:45
    3.Swift的(Float)和(Double)浮点类型  4:47
    4.字符串(String)及对字符(Characters)的遍历  2:26
    5.Swift字符串的使用详解  5:39
    6.Swift中的元组(Tuples)  2:04
    7.基本数据类型之间的互相转换  2:52
    8.一维数组(Array)的使用详解  2:57
    9.多维数组的创建和遍历  1:49
    10.数组的几种遍历方式  2:09
    11.字典(Dictionary)的使用详解  5:12
    12.Swift的一元、二元和三元运算符  2:52
    13.Swift的位运算符和防溢出运算符  2:26
    14.比较运算符和区间运算符  3:10
  第3章:流程控制
    1.使用for-in循环遍历数组  3:36
    2.使用循环语句获得序列中的最小值  2:56
    3.switch-case语句的实例解析  2:27
    4.continue、break和fallthrough的区别  3:16
    5.while和repeat-where循环语句  2:35
    6.if和if-let判断语句的使用解析  3:17
  第4章:函数
    1.函数func以及函数的参数和返回值  3:22
    2.函数的外部参数名  2:24
    3.创建拥有任意数量参数的函数  2:05
    4.函数的输入输出inout参数解析  1:54
    5.给函数的参数设置默认的取值  1:52
    6.使用函数作为另一个函数的参数  3:00
    7.函数类型的解析  2:10
    8.使用函数类型作为函数的返回类型  2:10
    9.函数可以拥有多个返回值  2:04
    10.藏在函数内部的函数  1:47
    11.递归函数的使用解析  1:58
    12.Swift那些非常实用的内部函数  4:58
  第5章:类与对象
    1.Swift的枚举(enum)类型及遍历  2:46
    2.给枚举类型添加方法  2:11
    3.Swift的结构(struct)类型及其下标(subscript)  3:11
    4.类(class)的初始化方法、属性和方法  2:46
    5.类的引用(reference)特征  2:07
    6.类和结构两个类型的比较  2:48
    7.类属性的set和get方法解析  1:53
    8.类属性的willSet和didSet方法解析  2:21
    9.类析构方法(deinit)的使用  1:29
    10.给类添加下标(subscript)  2:04
    11.类的静态方法(class func)  1:51
    12.将一个类的实例作为另一个类的属性  2:03
    13.类的继承以及方法的重写(override)  2:18
    14.父类在实例类型转化时的应用  2:02
    15.使用is语句检查实例的类型  3:44
    16.使用Any表示任意值类型  2:25
  第6章:扩展协议
    1.使用扩展(extension)扩展类型的属性  1:57
    2.使用extension对方法进行扩展  1:37
    3.使用协议(protocol)进行方法的声明  4:28
    4.问号?和感叹号!的用法解析  5:27
    5.Swift中的闭包(Closure)详解  4:29
    6.Swift语言中的泛型编程  3:18
    7.Swift的do-try-catch错误处理模式  4:48
    8.实例的引用特征和Swift的内存管理  2:19
    9.实例的交叉引用和弱引用(weak)  3:00
    10.Swift的懒加载(lazy initialization)使用解析  2:28
  第7章:常见概念
    1.范围Range、ClosedRange和NSRange的使用  2:43
    2.点CGPoint和变形CGAffineTransform的使用  2:34
    3.尺寸CGSize的使用详解  2:35
    4.范围CGRect的使用详解  3:00
    5.使用NSString对字符串进行各种操作  3:28
    6.日期Date和DateFormatter日期的格式化  4:59
    7.日历Calendar和日期组件DateComponents  1:47
    8.日历Calendar和时区TimeZone  1:54
    9.使用定时组件Timer执行定时任务  4:01
    10.使用UserDefaults和归档方式存取用户数据  6:16
    11.路径URL的使用详解  2:24
    12.使用DispatchGroup管理线程组  1:48
    13.使用UIScreen查询设备屏幕信息  2:09
    14.使用UIColor设置界面组件的颜色属性  3:11
  第8章:实用进阶
    1.Swift语言中的两种单例模式  3:05
    2.Swift语言中的三种消息传递模式  7:05
    3.闭包在定时任务、动画和线程中的使用  3:59
    4.通过protocol在两个对象中进行消息传递  8:25
    5.通过间接代理进行对象间的消息传递  6:04
    6.通过属性进行对象间的消息传递  6:25
    7.使用通知的方法进行对象间的数据传递  6:14
    8.使用performSegue在故事板页面之间进行数据传递  11:11
    9.Swift中的栈Stack和队列Queue详解  5:22
    10.Swift中的链表LinkedList详解  2:58
    11.使用Swift创建一个二叉树BinaryTreeNode  3:51
    12.冒泡排序算法的Swift实现  9:41
    13.选择排序算法的Swift实现  7:58
    14.快速排序算法的Swift实现  10:34
    15.插入排序算法的Swift实现  6:25
    16.希尔排序算法的Swift实现  6:55
    17.归并排序算法的Swift实现  8:57
    18.基数排序算法的Swift实现  8:29
    19.堆排序算法的Swift实现  9:00
  第9章:完整实例
    1.在iTunesConnect中创建产品ACTHelper  10:37
    2.在Xcode9中创建新项目ACTHelper  4:49
    3.创建开发证书和发布证书及其它文件  14:23
    4.在ACTHelper项目中使用CocoaPod管理插件  4:00
    5.创建BaseViewController作为控制器的基类  9:10
    6.创建App的欢迎页面  8:59
    7.登陆页面:创建自定义视图及相关组件  19:43
    8.登陆页面:创建自定义表单Row以及基控制器  16:27
    9.创建用户登陆页面  23:34
    10.用户注册账号信息的输入和短信验证码  31:31
    11.用户注册头像和科目信息输入页面  20:27
    12.用户注册考试成绩输入页面及相关自定义组件  24:49
    13.试题解析页面及相关自定义组件  18:28
    14.试题科目列表及答案列表等自定义组件  27:49
    15.创建试题解析列表页面和试卷选择页面  38:26
    16.创建试题详情页面和浮动菜单组件  35:53
    17.试题原文显示页面和数学公式的渲染  14:32
    18.账号设置列表页面和分享、反馈、评分功能  13:05
    19.会员个人信息设置页面和登出功能  14:03
    20.App发布前的设置以及打包、上传和提交审核  11:46
大家可以点击【查看详情】查看我的课程
2016-04-24 23:47:00 feng2qing 阅读数 3746

在项目开发中有时候需要把一些循环执行的异步操作加入到group中,让彻底循环完之后再进行下一步操作,直接上代码

创建一个组

swift2.3:
let group = dispatch_group_create()

swift3.0:
let group = DispatchGroup()

循环加载数据

swift2.3:
for _ in array.count {

    //将当前的下载操作添加到组中
    dispatch_group_enter(group)

    //在这里异步加载任务

    //离开当前组
    dispatch_group_leave(group)
}

swift3.0:
for _ in array {

    //将当前的下载操作添加到组中
    group.enter()

    //在这里异步加载任务

    //离开当前组
    group.leave()
}

全部加载完后通过闭包通知调用者

swift2.3:
dispatch_group_notify(group, dispatch_get_main_queue()) { () -> Void in

    //在这里告诉调用者,下完完毕,执行下一步操作
}

swift3.0:
group.notify(queue: DispatchQueue.main) { 
    //在这里告诉调用者,下完完毕,执行下一步操作
}
2017-12-25 14:26:42 fzhlee 阅读数 2539

免费下载地址:https://itunes.apple.com/cn/app/id1320746678

◈ 不看视频不看书,手把手带您学习Swift语言
◈ 利用手指来互动式学习Swift 4.0
◈ 无痛上手,比观看视频、阅读书籍更加有趣、更加有效的学习方式 
◈ 变被动学习为主动学习,真正的Swift语言一点通,是您学习Swift语言的最佳方式


【Swift4互动教程是什么】
Swift4互动教程是一款简单、有趣、互动式的学习Swift的新工具。是第一款互动式学习Swift的工具。此应用将向您展示基于Swift 4.0的绝大部分功能点。
就像有一名专业的教师手把手地教您最新、最实用的Swift编程技巧。您将学会怎么使用Xcode来快速、直接地表达您的想法与创意。
另外,本应用119节课都包含互动模式,同时也支持观赏模式,当您在互动式学习中肢体疲劳时,可以切换至此模式,这样意味着您同时也拥有了119节教学影片。 

【Swift4互动教程主要包括哪些内容】
包含常量与变量、基本数据类型,以及Swift语言中的新数据类型—元组型和可选型的内容。同时还讲解了运算符和表达式、流程控制语句、字符和字符串、集合类型、函数和闭包。此外,Swift面向对象的枚举、结构体、类,以及内存管理、协议与抽象类型、错误处理、链式编程、iOS开发中的常见概念等内容也有所涉及。在第八章我们使用Swift语言实现了栈、队列、二叉树等数据结构,还实现了常见的8种排序算法。最后一章则包含了证书的创建、项目的架构、开发、打包、上传和发布一整套流程,供您学以致用。 部分内容如下:
- 使用Playground学习Swift
- Swift语言中的常量和变量
- Swift的标识符和关键字
- Swift的表达式Expressions
- 给Swift代码添加注释语句
- Swift的几个打印输出语句
- 在控制台输出类的实例及其属性

- Swift的(Boolean)布尔类型
- Swift的(Int)整形类型
- Swift的(Float)和(Double)浮点类型
- 字符串(String)及对字符(Characters)的遍历
- Swift字符串的使用详解
- Swift中的元组(Tuples)
- 基本数据类型之间的互相转换
- 一维数组(Array)的使用详解
- 多维数组的创建和遍历
- 数组的几种遍历方式
- 字典(Dictionary)的使用详解

- Swift的一元、二元和三元运算符
- Swift的位运算符和防溢出运算符
- 比较运算符和区间运算符
- 使用for-in循环遍历数组
- 使用循环语句获得序列中的最小值
- switch-case语句的实例解析
- continue、break和fallthrough的区别
- while和repeat-where循环语句
- if和if-let判断语句的使用解析

- 函数的参数和返回值
- 函数的外部参数名
- 创建拥有任意数量参数的函数
- 函数的输入输出inout参数解析
- 给函数的参数设置默认的取值
- 使用函数作为另一个函数的参数
- 函数类型的解析
- 使用函数类型作为函数的返回类型
- 函数可以拥有多个返回值
- 藏在函数内部的函数
- 递归函数的使用解析
- Swift那些非常实用的内部函数

- Swift的枚举(enum)类型及遍历
- 给枚举类型添加方法
- Swift的结构(struct)类型及其下标(subscript)
- 类(class)的初始化方法、属性和方法
- 类的引用(reference)特征
- 类和结构两个类型的比较
- 类属性的set和get方法解析
- 类属性的willSet和didSet方法解析
- 类析构方法(deinit)的使用
- 给类添加下标(subscript)
- 类的静态方法(class func)
- 将一个类的实例作为另一个类的属性
- 类的继承以及方法的重写(override)
- 父类在实例类型转化时的应用
- 使用is语句检查实例的类型
- 使用Any表示任意值类型

- 使用扩展(extension)扩展类型的属性
- 使用extension对方法进行扩展
- 使用协议(protocol)进行方法的声明
- 问号?和感叹号!的用法解析
- Swift中的闭包(Closure)详解
- Swift语言中的泛型编程
- Swift的do-try-catch错误处理模式
- 实例的引用特征和Swift的内存管理
- 实例的交叉引用和弱引用(weak)
- Swift的懒加载(lazy initialization)使用解析

- 范围Range、ClosedRange和NSRange的使用
- 点CGPoint和变形CGAffineTransform的使用
- 尺寸CGSize的使用详解
- 范围CGRect的使用详解
- 使用NSString对字符串进行各种操作
- 日期Date和DateFormatter日期的格式化
- 日历Calendar和日期组件DateComponents
- 日历Calendar和时区TimeZone
- 使用定时组件Timer执行定时任务
- 使用UserDefaults和归档方式存取用户数据
- 路径URL的使用详解
- 使用DispatchGroup管理线程组
- 使用UIScreen查询设备屏幕信息
- 使用UIColor设置界面组件的颜色属性

- Swift语言中的两种单例模式
- Swift语言中的三种消息传递模式
- 闭包在定时任务、动画和线程中的使用
- 通过protocol在两个对象中进行消息传递
- 通过间接代理进行对象间的消息传递
- 通过属性进行对象间的消息传递
- 使用通知的方法进行对象间的数据传递
- 使用performSegue在故事板页面之间进行数据传递
- Swift中的栈Stack和队列Queue详解
- Swift中的链表LinkedList详解
- 使用Swift创建一个二叉树BinaryTreeNode
- 冒泡排序算法的Swift实现
- 选择排序算法的Swift实现
- 快速排序算法的Swift实现
- 插入排序算法的Swift实现
- 希尔排序算法的Swift实现
- 归并排序算法的Swift实现
- 基数排序算法的Swift实现
- 堆排序算法的Swift实现

- 在iTunesConnect中创建产品ACTHelper
- 在Xcode9中创建新项目ACTHelper
- 创建开发证书和发布证书及其它文件
- 在ACTHelper项目中使用CocoaPod管理插件
- 创建BaseViewController作为控制器的基类
- 创建App的欢迎页面
- 登陆页面:创建自定义视图及相关组件
- 登陆页面:创建自定义表单Row以及基控制器
- 创建用户登陆页面
- 用户注册账号信息的输入和短信验证码
- 用户注册头像和科目信息输入页面
- 用户注册考试成绩输入页面及相关自定义组件
- 试题解析页面及相关自定义组件
- 试题科目列表及答案列表等自定义组件
- 创建试题解析列表页面和试卷选择页面
- 创建试题详情页面和浮动菜单组件
- 试题原文显示页面和数学公式的渲染
- 账号设置列表页面和分享、反馈、评分功能
- 会员个人信息设置页面和登出功能
- App发布前的设置以及打包、上传和提交审核
- 更多内容等待您的探索!!!










【相关互动教程】
Xcode9.0互动教程
https://itunes.apple.com/cn/app/id1063100471

iOS开发中的神兵利器
https://itunes.apple.com/cn/app/id1209739676

Excel2016互动教程
https://itunes.apple.com/cn/app/id1090726089

Photoshop CC互动教程精装版
https://itunes.apple.com/cn/app/id822431555

Illustrator CC互动教程
https://itunes.apple.com/cn/app/id1005557436

Photoshop CS5互动教程完全版:
https://itunes.apple.com/cn/app/id976566883

Photoshop脚本互动教程
https://itunes.apple.com/cn/app/id926846601