iOS 最新Swift5.0 语言
Xcode已经更新到了12.0,再次对Swift的语法做了更新,包含一些和OC的对比,此专栏我一直在维护
iOS鸽子
iOS 没有那么多时间去思考,我怎么如此平凡
展开
-
Swift5.0 系列博客索引
友情提示:Swift5.0 系列博客文章,我使用Commend Line Tool 创建的工程,每一篇代码都可以放在单独的一个swift文件里,以增强阅读性,不会报错,该注释的我都注释掉了,便于学习-Swift5.0 系列博客索引一 Swift 5.0之 常量与变量二 Swift 5.0之 基本数据类型四 Swift 5.0之 Bool类型五 Swift 5.0之 元祖六 Swift5.0之 可选值七 Swift5.0之 字符和字符串八 Swift5.0之 字符串常用方法九 Swift原创 2020-12-18 16:32:10 · 214 阅读 · 1 评论 -
一 Swift 5.0之 常量与变量
/*输出:C: printf("Hello, World!");OC:NSLog(@"Hello, World!");Swift1.2:println("Hello, World!")Swift2.0:print("Hello, World!")*/print("Hello, World!")/*“使用let来声明常量,使用var来声明变量”变量:OC:>先定义再初始化int n原创 2017-03-24 10:44:16 · 667 阅读 · 0 评论 -
二 Swift 5.0之 基本数据类型
/*基本数据类型OC:整型 int intValue = 10;浮点型 double doubleValue = 10.10; float floatValue = 5.1;长 long短 short有符号 signed无符号 unsigned各种类型的数据的取值范围在不同位的编译器下取值范围不同Swift:注意关键字大写*///整型var intValue:Int = 10原创 2017-03-24 11:00:23 · 490 阅读 · 0 评论 -
四 Swift 5.0之 Bool类型
/*C语言和OC并没有真正的Bool类型C语言的Bool类型非0即真OC语言的Bool类型是typedef signed char BOOL;Swift引入了真正的Bool类型Bool true false*/let isOpen = true;//let isOpen = 1;// Swift中if的条件只能是一个Bool的值或者是返回值是Bool类型的表达式(==/!=/>/<等原创 2017-03-24 11:05:26 · 667 阅读 · 0 评论 -
五 Swift 5.0之 元祖
/*元祖:在其它语言中很早就是有元祖这个概念, 但是对于OC程序员来说这是一个新的概念将多个相同或者不同类型的值用一个小括号括起来就是一个元祖*/let student = ("lnj", 30, 99.8)print(student)print(student.0)print(student.1)print(student.2)/*元祖其实和结构体很想, 只是不需要提前定义类型原创 2017-03-24 11:07:32 · 568 阅读 · 0 评论 -
六 Swift5.0之 可选值
/*可选值: optionals有两种状态: 1.有值 2.没有值, 没有值就是nil*///有值:var optValue1: Int? = 9//没有值:var optValue2: Int?var optValue3: Int? = nil/*可选值可以利用if语句来进行判断*/var optValue4: Int?if optValue4 != nil{ pr原创 2017-03-27 17:29:35 · 462 阅读 · 0 评论 -
七 Swift5.0之 字符和字符串
/*字符:OC: char charValue = 'a';*/var charValue1:Character = "a"/*Swift和OC字符不一样1.Swift是用双引号2.Swift中的字符类型和OC中的也不一样, OC中的字符占一个字节,因为它只包含ASCII表中的字符, 而Swift中的字符除了可以存储ASCII表中的字符还可以存储unicode字符, 例如中文:OC:原创 2017-03-28 09:13:51 · 407 阅读 · 0 评论 -
八 Swift5.0之 字符串常用方法
/*计算字符串长度:C:char *stringValue = "abc李";printf("%tu", strlen(stringValue));打印结果6OC:NSString *stringValue = @"abc李";NSLog(@"%tu", stringValue.length);打印结果4, 以UTF16计算*/var stringValue = "abc李"pr原创 2017-03-28 09:19:49 · 849 阅读 · 0 评论 -
九 Swift5.0之 运算符
/*算术运算符: 除了取模, 其它和OC一样, 包括优先级+ - * / % ++ --*/var result = 10 + 10result = 10 * 10result = 10 - 10result = 10 / 10print(result)/*注意:Swift是安全严格的编程语言, 会在编译时候检查是否溢出, 但是只会检查字面量而不会检查变量, 所以在Swift中一定要原创 2017-03-28 09:23:39 · 1133 阅读 · 0 评论 -
十 Swift5.0之 if 用法
/*if语句基本使用OC:int age1 = 10;int age2 = 20;int max;max = age2;if (age1 > age2) { max = age1;}NSLog(@"%d", max);if (age1 > age2) { max = age1;}else{ max = age2;}NSLog(@"%d", max);原创 2017-03-28 09:37:01 · 1009 阅读 · 0 评论 -
十一 Swift5.0之 while 用法
/*while循环格式:while(循环保持条件){需要执行的语句}OC:int i = 0;int sum = 0;while (i <= 10) { sum = i++;}while (i <= 10) sum = i++;NSLog(@"%d", sum);如果只有一条指令while后面的大括号可以省略Swift:0.while后的圆括号可以省略1.只能以b原创 2017-03-28 09:40:58 · 1231 阅读 · 0 评论 -
十二 Swift5.0之 for循环
/*for循环格式: for (初始化表达式;循环保持条件;循环后表达式) {需要执行的语句}OC:int sum = 0;for (int i = 0; i <= 10; i++) { sum = i++;}NSLog(@"%d", sum);int sum = 0;int i = 0;for (; i <= 10; i++) { sum = i++;}NSL原创 2017-03-28 09:44:22 · 3042 阅读 · 0 评论 -
十三 Swift5.0之 数组的用法
/*数组定义:OC:有值数组NSArray *arr0 = @[@1, @2, @3];NSArray *arr1 = [NSArray arrayWithObjects:@1, @2, @3, nil];NSLog(@"%@", arr1);空数组NSArray *arr2 = @[];NSArray *arr3 = [NSArray array];NSLog(@"%@", ar原创 2017-03-28 09:50:03 · 1401 阅读 · 0 评论 -
十五 Swift5.0之 字典
/*字典定义: 键值对OC:NSDictionary *dict = [NSDictionary dictionaryWithObject:@"lnj" forKey:@"name"];NSLog(@"%@", dict);NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"ag原创 2017-03-30 09:39:13 · 1057 阅读 · 0 评论 -
十六 Swift5.0之 break-continue
/*break: 跳出循环, 无论循环保持条件是否还为真都不会再执行循环continue: 跳出本次循环, 如果循环保持条件还为真还会继续执行循环OC:NSArray *arr = @[@1,@3, @5, @7, @8];for (NSNumber *num in arr) {if ([num isEqualTo:@(7)]) { NSLog(@"找到幸运数字"); br原创 2017-03-30 09:42:51 · 866 阅读 · 0 评论 -
十七 Swift5.0之 Switch用法
/*Swith格式: switch(需要匹配的值) case 匹配的值: 需要执行的语句 break;OC:char rank = 'A';switch (rank) { case 'A': NSLog(@"优"); break; case 'B': NSLog(@"良"); break; case '原创 2017-03-30 09:46:51 · 5730 阅读 · 0 评论 -
十八 Swift5.0之 函数定义
/*函数: 完成某个特定任务的代码块, 给代码起一个合适的名称称之为函数名称. 以后需要执行代码块只需要利用函数名称调用即可, 好比每个人都有一个名字, 叫名字就能找到对应的人格式:func 函数名称(参数名:参数类型, 参数名:参数类型...) -> 函数返回值 {函数实现部分}OC:- (void)say{ NSLog(@"hello");}- (void)sayWithN原创 2017-03-30 09:50:41 · 399 阅读 · 0 评论 -
十九 Swift5.0之 函数类型
/*函数类型:类似于C语言的指向函数的指针类似于OC语言的block函数类型是由函数的参数类型和返回值类型组成的*/// 这两个函数的类型是 (Int, Int) -> Intfunc sum(a: Int, b: Int) ->Int{return a + b;}func sub(a: Int, b: Int) ->Int{return a - b;}// 可以利用函数类原创 2017-04-01 17:20:21 · 1031 阅读 · 1 评论 -
二十 Swift5.0之 闭包
/*闭包:函数是闭包的一种类似于OC语言的block闭包表达式(匿名函数) -- 能够捕获上下文中的值语法: in关键字的目的是便于区分返回值和执行语句闭包表达式的类型和函数的类型一样, 是参数加上返回值, 也就是in之前的部分{ (参数) -> 返回值类型 in 执行语句}*/// 完整写法let say:(String) -> Void = { (na原创 2017-04-01 17:25:29 · 440 阅读 · 0 评论 -
二十一 Swift5.0之 闭包捕获值
func getIncFunc(inc: Int) -> (Int) -> Int{ var max = 10 func incFunc(x :Int) ->Int{ print("incFunc函数结束")// return inc + x max++ return max + x } // 当执行到原创 2017-04-08 16:58:30 · 829 阅读 · 0 评论 -
二十二 Swift5.0之 枚举
/*Swift枚举:Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样增加属性和方法格式:enum Method{ case 枚举值}*/enum Method{// case Add// case Sub// case Mul// case Div // 可以连在一起写 case A原创 2017-04-08 17:01:41 · 5604 阅读 · 0 评论 -
二十三 Swift5.0之 结构体
/*结构体:结构体是用于封装不同或相同类型的数据的, Swift中的结构体是一类类型, 可以定义属性和方法(甚至构造方法和析构方法等)格式:struct 结构体名称 { 结构体属性和方法}*/struct Rect { var width:Double = 0.0 var height:Double = 0.0}// 如果结构体的属性有默认值, 可以直接使用原创 2017-04-11 15:00:36 · 1356 阅读 · 0 评论 -
二十四 Swift5.0之 类
/*类的基本定义Swift中的结构体和类非常相似, 但是又有不同之处类是具有相同属性和方法的抽象格式:class 类名称 { 类的属性和方法}*/class Rect { var width:Double = 0.0 var height:Double = 0.0 func show() -> Void{ print("width =原创 2017-04-11 15:03:57 · 302 阅读 · 0 评论 -
二十五 Swift5.0之 属性
/*存储属性其实Swift中的存储属性就是以前学习OC中的普通属性, 在结构体或者类中定义的属性, 默认就是存储属性*/struct Person { var name: String var age: Int}var p:Person = Person(name: "lnj", age: 30)p.name = "hm"p.age = 50/*常量存储属性常量存原创 2017-04-11 15:06:51 · 401 阅读 · 0 评论 -
二十六 Swift5.0之 方法
/*隶属于每一个类或结构体的函数称之为方法:方法分为类方法和实例方法, 对应OC中的+ - 方法实例方法:实例方法一定是通过对象来调用的, 实例方法隶属于某一个类*/class Person { var _name:String = "lnj" var _age:Int = 30 // 实例方法一定是通过对象来调用的, 实例方法隶属于某一个类// func s原创 2017-04-18 09:15:16 · 326 阅读 · 0 评论 -
二十七 Swift5.0之 下标(subscripts)
/*subscripts(下标): 访问对象中数据的快捷方式所谓下标脚本语法就是能够通过, 实例[索引值]来访问实例中的数据类似于以前我们访问数字和字典, 其实Swift中的数组和字典就是一个结构体Array: subscript (index: Int) -> TDictionary: subscript (key: Key) -> Value?arr[0] == arr.su原创 2017-04-18 09:18:56 · 313 阅读 · 0 评论 -
二十八 Swift5.0之 继承
/*继承语法继承是面向对象最显著的一个特性, 继承是从已经有的类中派生出新的类新的类能够继承已有类的属性和方法, 并能扩展新的能力术语: 基类(父类, 超类), 派生类(子类, 继承类)语法: class 子类: 父类{}继承优点: 代码重用继承缺点: 增加程序耦合度, 父类改变会影响子类注意:Swift和OC一样没有多继承*/class Man { var name:S原创 2017-04-19 08:45:24 · 705 阅读 · 0 评论 -
二十九 Swift5.0之 构造方法 一
/*构造方法:作用: 对实例对象的内容进行初始化Swift要求类或者结构体中的存储属性(非lazy的)在对象构造完毕后要有初始化值语法:init(参数列表){ 初始化代码 }注意: 1.在Swift中类/结构体/枚举都需要构造方法2.构造方法的作用仅仅是用于初始化属性, 而不是分配内容, 分配内存是系统帮我们做的3.构造方法是隐式调用的, 通过 类名称() 形式创建一个对象就会隐式调原创 2017-04-21 17:25:29 · 365 阅读 · 0 评论 -
三十 Swift5.0之 构造方法 二
/*继承与构造方法:指定构造与便利构造方法*/class Person { var name:String var age:Int // 指定构造方法都是以init开头的 init(name:String, age:Int) { self.name = name self.age = age } // 如果原创 2017-04-22 08:10:01 · 1261 阅读 · 0 评论 -
三十一 Swift5.0之 析构方法
/*析构方法对象的内存被回收前夕被隐式调用的方法, 对应OC的dealloc方法主要执行一些额外操作, 例如释放一些持有资源, 关闭文件, 断开网络等*/class FileHandler{ var fd: Int32? // 文件描述符 // 指定构造器 init(path:String){ // 需要打开的文件路径, 打开方式(只读)原创 2017-04-22 10:41:11 · 322 阅读 · 0 评论 -
三十二 Swift5.0之 内存相关
/*Swift内存管理:管理引用类型的内存, 不会管理值类型, 值类型不需要管理内存管理原则: 当没有任何强引用指向对象, 系统会自动销毁对象(默认情况下所有的引用都是强引用)如果做到该原则: ARC*/class Person { var name:String init(name:String){ self.name = name }原创 2017-04-24 09:37:58 · 351 阅读 · 0 评论 -
三十三 Swift5.0之 可选类型
/*可选类型: 可选类型的本质其实就是一个枚举None 没有值Some 有值格式: Optional<类型> 或 在类型后面加上?号由于可选类型在Swift中随处可见, 所以系统做了一个语法糖, 在类型后面加上?*/var opa: Optional<Int>var opb: Int?var nora: Intnora = 10// 基本类型变量, 在使用之前必须进行初始化,原创 2017-04-24 09:43:54 · 768 阅读 · 0 评论