import Foundation /* Swift中子类必须包含的构造器 1.Swift允许在父类构造器前添加required关键字, 用于声明所有子类必须包含该required构造器 (如果没有声明, 子类中默认会自动包含), 至于要怎么实现父类中required构造器, 没有特殊要求 可以通过便利构造器实现, 也可以通过普通构造器实现 2.父类中声明的required构造器既可以是指定构造器, 也可以是便利构造器 Swift中子类必须包含的析构器(用于在对象释放之前进行资源释放, 对象会在…
__init__与__new__这两个魔法方法组成了Python类对象的构造器,在Python类实例化时,其实最先调用的不是__init__而是__new__.__new__是负责实例化对象的,而__init__是初始化操作.__del__是析构器,当Python对象的所有引用都不存在了(被del了),就会自动触发__del__执行. class CapStr(str): def __new__(cls, string): #此时string = 'i love you' cls是CapStr这…
一.继承与重写, 防止重写 1.1 基类, 不继承任何类. Swift不想OC或者Java中继承自Object类.定义一个类,不继承任何类,该类就是基类. [java] view plaincopy class Person1{   //这个Person1就是基类 func eat(){ println("eat a pig!") } } 1.2 继承. Swift为单继承 [java] view plaincopy class XiaoMing1 : Person1{ var nam…
// 析构器 只适用与 类类型, 当一个类的实例被释放之前, 析构器会被立即调用, 析构器用关键字 deinit 来标示, 类似于构造器要用 init 来标示 // 析构过程原理 // Swift 会自动释放不再需要的实例以释放资源, 如 自动引入计数 章节中所描述, Swift 通过自动引用计数 (ARC) 处理实例的不存管理. 通常当你的实例被释放是不需要 手动去清理, 但是, 当使用自己的资源时, 你可能需要进行一些额外的清理, 例如, 如果创建了一个自定义的类来打开文件, 并写入一些数据…
import Foundation /* 构造器的继承: Swift的子类不会自动继承父类的构造器, 若继承, 则满足如下规则: 1.如果子类没有提供任何指定构造器, 那么它将自动继承父类的所有指定构造器 2.如果子类实现了父类所有的指定构造器, 无论如何实现的, 都将自动继承父类的所有便利构造器 */ /* 构造器的重写: 1.子类构造器重写了父类的指定构造器, 必须添加override修饰符 2.子类中定义的构造器只是和父类中便利构造器的形参列表, 外部形参名相同, 不算重写 */ /* 总…
import UIKit // 1.一个类中至少有一个指定构造器, 其必须负责初始化类中所有的实例存储属性 // 2.便利构造器属于次要的, 辅助性的构造器 // 3.类中可以不定义便利构造器, 便利构造器必须调用同一个类中的其他构造器完成初始化 // 4.便利构造器的语法格式 convenience init(形参) {} // 5.只有类中才有便利构造器 // 类的构造器链 // Swift对构造器之间的调用链制定了如下3条规则: // 1.子类构造器必须调用直接父类的指定构造器(如果有乳类…
import Foundation /* 可能失败构造器的传播(调用) 1.可能失败的构造器可以调用同一个类中的普通构造器 2.普通构造器不能调用同一个类中的可能失败构造器 3.结构体中, 普通构造器却可以调用同一个结构体中可能失败的构造器 可能失败构造器的重写 1.子类可以用可能失败的构造器或者普通的构造器重写父类中的可能失败的构造器 2.子类的普通构造器不能向上调用父类的可能失败的构造器 3.子类的可能失败的构造器可以调用父类的可能失败的构造器 */ class Person { var n…
未翻译完 待续(英语烂,求斧正) Type Casting 类型转换 Type casting is a way to check the type of an instance, and/or to treat that instance as if it is a different superclass or subclass from somewhere else in its own class hierarchy. 类型转换是检测实例所属类型的一种方法,和/或 去对待实例好像它是一个…
访问控制(Access Control) 访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别.这个特性可以让我们隐藏代码的一些实现细节,并且可以指定一些代码和访问和使用的优先接口. 你可以明确地给单个类型(类.结构体.枚举)设置访问级别,也可以给这些类型的属性.方法.构造器.下标等设置访问级别.协议也可以被限定在一定的范围内使用,包括协议里的全局常量.变量和函数. Swift 不仅提供了多种不同的访问级别,还为某些典型场景提供了默认的访问级别,这样就不需要我们在每段代码中都申明显式访问…
原文出处:Understanding Optionals in Swift 苹果新的Swift编程语言带来了一些新的技巧,能使软件开发比以往更方便.更安全.然而,一个很有力的特性Optional,在你第一次使用时可能会感到困惑.Optionals将会在编译阶段检查哪些值为nil.通过这种方式,你可以更好的保证应用程序交付在用户手里是可运行的.在Swift中,Optionals也提供了一些接口用来和遗留的Objective-C代码之间交互. 初试Optional 让我们在XCode中新建一个叫做s…