自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Zoneday的博客

一颗自由放飞的程序员灵魂,致力于成为IT界的大导演。

  • 博客(71)
  • 收藏
  • 关注

原创 swift4.2新特性

swift4.2新特性CaseInterable协议条件一致性优化Equatable 和Hashable更加安全的Hashable随机数生成检查平台条件#warning和#error编译指令removeAll(where:)allSatisfy()toggle()last(where:)和lastIndex(where:)swift4.2新特性C...

2018-08-27 09:45:57 1553

原创 Python返回函数

函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。先举个栗子,要实现一个可变参数的函数求和,通常这么写:def calc_sum(*args): ax = 0 for n in args: ax += n return ax那么,如果不需要立刻求和,而是在后面的代码中,根据需要再去计算那怎么办呢?这时候就可以不...

2018-07-20 13:50:34 848

原创 Python高阶函数:sorted

排序算法排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。Python内置的sorted()函数就可以对list进行排序:>>> sorted([23, 45, 1, -19, -22,...

2018-07-19 14:24:31 314

原创 Python高阶函数:filter

Python内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列,和map()不同的是,filter把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。(这里顺带说一下,Python和Objective-C一样,都是非0即真)所以把一个序列中的非字符串和空字符串删掉,可以这么写:lists = ...

2018-07-19 09:09:22 413

原创 Python高级函数:map/reduce

map()reduce() Python内建了map()和reduce()函数。map()map()用法:map函数接收两个参数,一个是函数,一个是Iterable, map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。# 举个例子def f(x): return x * xr = map(f, [1,2,3,...

2018-07-18 17:16:24 289

原创 Python函数式编程

'''函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。''''''而函数式编程(请注意多了一个“式”字)——Functional Programming,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算。''''''我们...

2018-07-18 15:29:59 144

原创 Python高级特性:切片、列表生成式、生成器、迭代器

Python高级特性一、切片二、列表生成式三、生成器四、迭代器Python高级特性一、切片list = [1,2,3,4,5,6,7]# 包含起点,不包含终点list1 = list[1:3]# list1 = [2,3]# :前后可省略list2 = list[2:]# list2 = [3,4,5,6,7]二、列表生成式...

2018-07-18 15:25:55 314

原创 Python学习之:函数

函数函数的调用Python内置了很多有用的函数,我们可以直接调用。要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。可以直接从Python的官方网站查看文档:也可以在交互式命令行通过help(abs)查看abs函数的帮助信息。调用abs函数:abs(100)# 100abs(-20)# 20abs(12.34)#...

2018-07-13 18:18:09 233

原创 Python学习之:集合

集合集合元素的添加集合元素的删除集合的操作集合的遍历集合set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key,要创建一个set,需要提供一个list作为输入集合:set1 = set([1, 2, 3, 2, 1]) 注意,传入的参数[1, 2, 3]是一个list,而显示的{1, ...

2018-07-13 18:16:03 144

原创 Python学习之:字典

字典字典的读取字典元素的添加字典元素的删除字典的遍历字典Python内置了字典(dict)的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度:# 字典里面key和value可以是不同类型dic = {'4': 4, 1: 1} 字典里面key和value可以是不...

2018-07-13 18:06:20 195

原创 Python学习之:元祖

元组字典字典的读取字典元素的添加字典元素的删除字典的遍历集合集合元素的添加集合元素的删除集合的操作集合的遍历函数函数的调用函数定义空函数参数检查返回多个值函数的参数位置参数默认参数可变参数关键字参数命名关键字参数参数组合递归函数元组另一种有序列表叫元组:tuple,tuple和list非常类似,但是tuple...

2018-07-13 17:58:32 615

原创 error: unable to execute command: Segmentation fault: 11 解决办法

这个错误很久以前碰到过。今天又碰到发现忘记解决办法了。查了查。还是在博客里记录一下。免得又忘了。毕竟年纪大了造成这个问题的原因有很多。解决途径也有好几个。不清楚问题的话。挨个试一下吧1、直接 Enable Bitcode 里的yes改成no2、这里改成no 3、...

2018-05-21 16:48:49 8038

原创 编译原理:解释程序

编译程序是一个语言处理程序,它把一个高级语言程序翻译成某个机器的汇编语言程序或二进制代码程序,这个二进制代码程序在机器上运行以生成结果。因此通过编译程序使得程序员可以先准备好一个在该机器上运行的程序。然后这个程序便会以机器的速度运行。但是在不把整个程序全部翻译完成后,这个程序是不能开始运行、也不能产生任何结果的。编译和运行是两个独立分开的阶段。但在一个交互环境中,并不需要将这两个阶段分隔开。这...

2018-05-18 17:36:12 6936

原创 编译原理:编译程序的结构

在上一篇编译过程的文章讲到编译过程的6个阶段的任务可以分别由6个模块完成,分别称作词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序和目标代码生成程序。此外,一个完整的编译程序还必须包括表格管理程序和出错处理程序。如下图: 表格管理和出错处理与上一篇讲的6个阶段都有联系,编译过程中源程序的各种信息被保留在种种不同的表格里,编译各阶段的工作都涉及构造、查找或更新有关的表格...

2018-05-18 12:00:25 5237

原创 Python学习之:判断语句和循环语句

判断语句: Python里的判断语句基本语法:if 表达式: 执行函数else: 执行函数#最基本的例子age = 24if age > 25: print("你年纪太大了!")else if age > 20: print("你风华正茂!~")else: print("你还小!~")循环语句:Python里的循环跟...

2018-05-02 14:09:53 221

原创 Python学习之:字符编码的区别与介绍

说到计算机语言,其实追究到最底层的电路元件,其实就两个状态,要么通电,要么不通电,所以,最根本的计算机语言其实就是用0和1表示。数字的话,二进制其实很好理解,满二进一。所以数字可以很容易的转化为计算机语言,但是英文字母和符号的话怎么办呢?这时候就出来了一张表,英文名简写 ASCII 。中文名是 美国信息交换标准代码。但是ASCII码能表示的数字只有0~255. 其中英文26个字母加数字...

2018-05-02 11:21:05 162

原创 编译原理:编译过程和编译程序的结构

编译过程概述: 编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的,典型的划分方法主要分为6个阶段、如下: 源程序 -> 词法分析 -> 语法分析 -> 语义分析 -> 中间代码生成 -> 代码...

2018-05-01 12:19:35 9269

原创 编译原理:什么是编译程序?

核心观点: 一个编译程序就是一个语言翻译程序。就是把一种语言书写的程序翻译成另一种语言(目标语言)的等价程序。重要性: 一个编译程序的重要性体现在它使得多数计算机用户不必考虑与机器有关的繁琐细节,使程序员和程序设计专家独立于机器,这对于当今机器的数量和种类持续不断增长的年代尤为重要。编译程序的功能: 高级语言程序(源程序) –> 编译程序 –> 低级语言程序(目标...

2018-04-28 10:25:08 6736

原创 Python学习之:变量

Python是我学习的首个不需要修饰符去修饰变量的语言,声明变量只需要写个变量名并赋值就可以了,例如:#变量名只能是由字母,数字和下划线组成,并且不能以数字开头#Python只需要这样就可以声明一个变量了,所以Python没有严格意义上的常量name = "Zoneday"#如果要声明一个常量,可以把变量名全大写,这是一个约定俗成的方法,告诉别人,这是常量,不要去修改。(虽然一定要修...

2018-04-27 16:46:10 150

原创 Python学习之:序章

开始学习Python,记录下点点滴滴。接下来的几篇文章会先从计算机语言基础开始写,这些大学学的东西都快忘了。趁现在整理整理。温故而知新!~Python是一门很神奇的语言,八几年的时候才刚诞生这门语言,91年Python编译器才出现,04年出了一个牛逼的web框架,从此Python走上了一条高速发展的道路。从开始发展到逐渐占据各大语言榜单前列,只用了短短10来年时间。这对一门语言来说,真...

2018-04-27 16:38:02 171

原创 Swift中文输入法限制字数以及常用字符串处理方法

有个常用需求是这样:例如修改昵称时,要求输入不超过10个字符。(中英文数字都算一个字符)。如果用textField自带的textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 这个代理方法的话,会有一个问题...

2018-04-12 16:33:19 1512

原创 Swift学习之:设置渐变色

在开发中,常常有这样的需求:给button添加渐变色、给label添加渐变色等等,因此只需要写一个UIView的类扩展,这些继承自UIView的类需要用的时候就能直接调用了。 代码如下:extension UIView { @discardableResult func setGradient(colors: [UIColor], startPoint: CGPoint ...

2018-04-12 11:25:23 2866 1

原创 正经修改Xcode工程名详解

网上关于修改Xcode工程名的博文多的不行,但大多都是复制粘贴同一个人的文章。结果就导致几乎都有很大的问题。 下面我说一下亲身实践修改Xcode工程名方法: 首先,前面的步骤按照这篇文章做就行。点我跳转1、如果是正经开发的项目的话,按照上面那篇文章操作完之后,一般还会有错误。 一个是推送。报错如下 Code signing is required for product type ...

2018-04-04 18:13:49 357

原创 iOS UIscrollView上添加View,设置约束不显示解决办法

不论是OC还是Swift都会遇到这样的问题,在scrollorView上添加view,给view设置约束后,run一下发现。view并没有显示,尤其是代码看起来好像没问题,举个例子如下://这是用Swift举的例子。跟OC是一样的。private func creatUI() { contentView.addSubview(scrollView) scrol...

2018-04-01 15:44:56 6693 1

原创 Swift 4.0学习之:逃逸与非逃逸闭包

刚看了一些博文资料。想要把逃逸闭包和非逃逸闭包简洁明了的阐述一下。如果有哪位大神觉得我总结的有偏差。欢迎留言指正~核心的观点: 非逃逸闭包在函数执行的时候就执行了。逃逸闭包是函数执行之后才执行(这样说可能不太严谨,表达能力有限,看下面的例子就明白了。)举一个简单的例子://这是一个非逃逸闭包,闭包doBlock 在函数执行的时候就调用了func methodName...

2018-03-23 15:55:55 921

原创 分类无法添加属性深入探究

之前已经写过两篇关于分类添加属性的博客了。 一篇着重讲基本原理:点击跳转 一篇着重讲如果非要添加的话怎么做:点击跳转今天跟一个大神深入探讨了一下核心的原因,对我之前两篇文章里强调的一句话做一些修正:“在OC里,category不能自动生成成员变量和setter和getter方法”。 这句话里的“不能”应该改为“系统选择了不做”。具体原因有以下两点:第一点: 如果在编译的时候...

2018-03-22 20:47:57 241

原创 Swift 4.0学习之:@discardableResult关键字

///表示取消不使用返回值的警告@discardableResult func isLogin(jump: Bool, success: Closure = nil, failed: Closure = nil) -> Bool

2018-03-21 14:39:30 3364

原创 Swift 4.0学习之:final关键字

final 关键字很多语言都有final这个关键字,Swift中,这个关键字可以用来修饰 class、func、var。表示被修饰的对象无法被继承。

2018-03-15 09:20:52 755

原创 Swift 4.0学习之:单例

单例Swift中的单例非常简单,往小了说,用 let 去修饰,写在类外,就是一个全局可用的单例。 如果想要像OC一样写一个单例类,也非常的简单,如下//单例类import UIKit//仿OC写法class danli: NSObject { static let instance: danli = danli() class func sharedDanli(...

2018-03-15 09:19:32 12572

原创 Swift 4.0学习之:@objc的使用

@objc的使用 知识点: 在Swift代码中,使用@objc修饰后的类型,可以直接供Objective-C调用。 可以使用@objc修饰的类型有以下几种: 1、未嵌套的类 2、协议 3、非泛型枚举(仅限于原始值为整形的类型) 4、类和协议中的属性和方法 5、构造器和析构器 6、下标注意点: Objective-C中所有的类都继承自NSO...

2018-03-15 09:18:17 8871

原创 Swift 4.0学习之:动态加载控制器

动态加载控制器前提条件: 在实际开发中,经常会碰到一个需求是这样,当遇到节假日的时候,tabbar上的图片和标题都需要做相应的更换,节假日一过,就换回来。更过分的是,连tabbar上展示的控制器ViewController都要求更换。这样的话,就需要跟服务器配合,写一个接口,每次打开APP的时候,请求一下这个接口,以JSon的格式返回需要展示的控制器以及相应的标题名和图片名。 举个例子,...

2018-03-15 09:16:42 682

原创 Swift 4.0学习之:动态获取命名空间

动态获取命名空间前提知识点: 先说一下获取命名空间的作用,在Swift的项目中,打印当前类的时候,会发现,相比OC,类名前多了一个命名空间。因此,在调用NSClassFromString(“”)这类方法的时候,在类名前,必须加上命名空间. 。举个小例子如下://项目名称:starProduct//要获取的类:AAAViewControllerlet aaa = NSClassFro...

2018-03-15 09:15:29 621

原创 Swift 4.0学习之:构造方法

构造方法 知识点:Swift中,如果定义属性的时候没有初始化,那么必须在后面加上 “ ?”。但是只要在构造方法中,对属性进行了初始化,那么就不用写“ ?”了。Swift中,有方法重载的概念,这种方式比较优雅,可惜OC里没有,因为OC不允许方法名相同,在Swift里,允许有同名的方法,只要形参或返回值不一样即可。注意点: 如果自定义了构造方法,并且没有重写父类的构造方法,那么实...

2018-03-15 09:14:00 338

原创 Swift 4.0学习之:setter--getter--方法

setter–getter–方法Swift的setter和getter方法跟OC的这两个方法大致一样,但是用法跟OC还是有区别的,比如上面说的懒加载。还有OC中常用的重写setter方法,在Swift里是这么用的:var aaa: String? { didSet { //设置完之后调用这个方法,Swift中用这个方法来代替OC中的重写setter方法 }}...

2018-03-14 10:47:07 1263

原创 Swift 4.0学习之:懒加载

九: 懒加载懒加载是一个在项目中特别常用的东西,在OC中,一般是通过重写getter方法来实现,但是在Swift里,多了一个叫 lazy 的修饰符,多么形象生动的命名。具体应用举例如下://在Swift中只需要通过 “lazy” + “=” + “闭包” 就可以实现懒加载lazy var dataList:[Any] = {//而且看这里,如果闭包是用来做懒加载的话,那么()-...

2018-03-14 10:45:22 3020

原创 Swift 4.0学习之:闭包

闭包说到闭包,用法跟OC的block是一样一样的,基本格式是 { ()->() in }通常是放到函数的实参里,举一个实际应用的例子:目标:创建一个scrollorView,上面有10个按钮,要求有一定的可复用性,可维护性,可扩展性。代码如下:override func viewDidLoad() { super.viewDidLoad() ...

2018-03-14 09:56:51 391

原创 swift 4.0学习之:函数语句

函数Swift的函数写法最基础的模式如下://基础表现形式func 函数名(传入参数,多个用逗号隔开)-> 返回值类型 {//如果没有返回值,可以填 Void,也可以 -> () ,也可以什么都不写,直接函数名(传入参数)后直接跟大括号}//实际应用中传入参数可以有以下三种写法func sum(a: Int,y b: Int,_ c: Int) { p...

2018-03-14 09:52:18 132

原创 swift 4.0学习之:字符串

字符串OC中的字符串是一个对象,继承于NSObject,但是Swift中的字符串是一个结构体,因此Swift中的字符串性能比OC中要高,实际应用举例如下:var str1 = "zyt"var str2 = "ssg"//单纯拼接两个字符串直接加就可以str1 += str2//如果两个字符串类型不一致的时候,可以用\()来拼接,如下let age = 25let name...

2018-03-14 09:50:45 469

原创 Swift 4.0学习之:数组和字典

数组和字典数组和字典的创建和OC基本一致,不用写前面的@而已,但是遍历字典的时候,Swift由于有元祖这个东西在,改进的方便了一点,,举例如下:let dictionay = ["一":1,"二":2]//如果是OC的话,遍历这个字典会这么写,当然swift这么写也可以for key in dictionay.keys { print(key)}//但是Swift还有一...

2018-03-14 09:37:12 1005 1

原创 swift 4.0学习之:可选绑定

可选绑定在Swift中,返回值或者数据类型后面加 ?表示可选类型,值可以为空,但是后面加 !的话,表示告诉编译器,这个是一定有值的,相当于强制解析,如果没有值的话,就会崩。这是前提。实际应用举例如下:let url = URL.init(string: "http://www.baidu.com")//正常写惯了OC的话,为了保证程序的稳定性,强制解析前一定会加判断,通常会这么写i...

2018-03-14 09:35:25 919

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除