![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Swift
JohanMan
这个作者很懒,什么都没留下…
展开
-
Swift基础 元组
相对于Java,Swift有一个很特殊的类型,叫“元组”。元组可以把多个值组成复合值,而且元组内的值可以是任意类型的。组合let error = (404, "Not Found")常量error类型是由Int和String组成的元组当然,也可以组合3个值:var box = (10, 20, 30)分解我们可以就爱你个元组分解成单个变量或常量let (code, describe) = error原创 2017-11-20 14:16:45 · 223 阅读 · 0 评论 -
Swift基础 方法
方法的语法和函数一致,在某个实例(类,结构体,枚举)定义的函数就实例方法。self类似于Java的“this”关键字,指定自己。在实例方法修改值类型属性的值默认情况下,值类型的实例方法是不能修改它的属性值struct StepCounter { var step: Int = 0 func add(by: Int) { // 编译器会报错,提示不能修改属性值 sel原创 2017-11-21 15:22:28 · 310 阅读 · 0 评论 -
Swift基础 属性
计算属性计算属性不直接储存,而是提供get和set函数访问值struct Circle { var radius: Float var area: Float { get { return 3.14 * radius * radius } set(newArea) { radius = n原创 2017-11-21 15:09:51 · 272 阅读 · 0 评论 -
Swift基础 结构体和类
Swift中,库中大部分都是有结构体实现的。struct Person { var name: String let age: Int}构造器结构体会默认提供一个成员逐一构造器var person = Person(name: "Johan", age: 20)如果在写结构体时,属性已经设置值了,或者属性是可选类型,可以这么创建结构体struct Person { var原创 2017-11-21 14:18:46 · 293 阅读 · 0 评论 -
Swift基础 枚举
创建枚举enum Direction { case east case south case west case north}成员值前加“case”关键字。也可以使用一个case声明所有成员值enum Direction { case east, south, west, north}使用var direction = Direction.southdi原创 2017-11-21 12:01:29 · 299 阅读 · 0 评论 -
Swift基础 闭包
当方法的输入参数是一个方法时,可以使用简化程序。如数组有个sort排序的方法,传入参数是 (x: T, y: T) -> Bool 类型的方法,不用闭包,使用sort方法func compare(x: Int, y: Int) -> Bool { return x > y}var array: [Int] = [1, 3, 2, 5, 9, 3]array.sort(by: compa原创 2017-11-21 09:28:01 · 201 阅读 · 0 评论 -
Swift基础 协议
协议类似于Java的接口,语法protocol 协议名 {}属性protocol Person { // 可读可写属性 var name: String { set get } // 可读属性 var age: Int { get }}实现协议和继承一样,使用“ : ”class ITPerson: Person { // 符合Person协议属性原创 2017-11-29 17:08:37 · 292 阅读 · 0 评论 -
Swift基础 扩展
对已有的类,结构体或者协议类型添加新的功能,就叫做扩展。这是我喜欢Swift语法的原因之一,超实用的。语法很简单extension 已有类型 { // 扩展计算属性(不能扩展储存属性) // 扩展构造器 // 扩展方法 // 扩展下标 ...}来一波例子,你就知道了扩展计算属性extension Float { var twice: Float {原创 2017-11-29 15:59:06 · 229 阅读 · 0 评论 -
Swift基础 函数
在Swift中,方法的返回值比较多样化,可以是自定义类型,也可以是元组,甚至是返回一个方法(没听错)。多样返回值返回基本类型func getValue() -> Int { return 1}返回元组func getPoint() -> (Int, Int) { return (x: 1, y: 2)}返回方法func min(x: Int, y: Int) -> Int {原创 2017-11-20 16:36:05 · 241 阅读 · 0 评论 -
Swift基础 清理操作
在Java中,我们读取文件时,会发生异常,我们一般会在finally块中关闭文件流。而在Swift中,我们可以在defer代码块中指定清理操作。func processFile(fileName: String) throws { if exist(fileName) { let file = open(fileName) defer {原创 2017-11-20 16:04:33 · 355 阅读 · 0 评论 -
Swift基础 错误处理
Swift的错误处理和Java的相似!!自定义错误struct ValueError : Error { let reason: String}实现Error协议便可自定义错误。抛出异常fun getValue100(error: Bool) throws -> Int { if error { throw ValueError(reason: "100")原创 2017-11-20 15:50:16 · 354 阅读 · 0 评论 -
Swift基础 自动引用计数和析构器
当每次创建新实例时,ARC会分配一块内存,用于储存实例信息。当实例不再使用时,ARC便会释放实例所占用的内存。引用计数那怎么判断实例是否还在使用?在Swift中,ARC会跟踪和计算实例正在被多少个变量或常量所引用,只要还有一个变量或常量保持实例的“强引用”,那么就说实例还在使用中,不能释放其内存。一旦计算实例不再使用,便会调用实例的析构函数“deinit”class Person { var原创 2017-11-29 15:42:05 · 259 阅读 · 0 评论 -
Swift基础 构造函数
指定构造函数struct Person { init() { // 构造函数 }}class Person { init() { // 构造函数 }}如果在结构体中定义了属性,不用自己写构造函数,默认会有一个逐一成员构造函数。 如果在类中定义了属性(非可选),自己就得在构造函数对属性进行初始化赋值,构造函数必须写。便利构造器在S原创 2017-11-29 14:01:42 · 342 阅读 · 0 评论 -
Swift基础 可选
相对于Java,Swift有一大特点,可选类型,用于处理值可能缺失的情况。Java的话,在值缺失的情况,还是可以使用的,不过会抛NullPointException异常。而Swift呢,提供了可选类型,使用前可以先“获取”,然后再使用,当然也可以“强行获取”。声明var name: String?name = "Johan"name = nil在已有类型后面添加“?”即可声明为可选类型,例子中n原创 2017-11-20 14:42:07 · 267 阅读 · 0 评论 -
Swift基础 下标
Swift的下标相当有意思,使用和数组或字典一样(会不会混淆呀,哈哈)下标主要用于快速访问某个元素struct TimesTable { let multiplier: Int subscript(index: Int) -> Int { return multiplier * index }}var timesTable = TimesTable(mul原创 2017-11-21 15:39:32 · 307 阅读 · 0 评论