Swift2.0对象基础知识点有哪些(swift,移动开发)

时间:2024-05-02 21:39:34 作者 : 石家庄SEO 分类 : 移动开发
  • TAG :

    Swift2.0%E5%AF%B9%E8%B1%A1%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E7%82%B9%E6%9C%89%E5%93%AA%E4%BA%9B

类与实例(对象)

类“是引用类型”,而非“值类型”

使用class关键字定义类

class People {

var name:String = ""

var age = 0

}

People是类名

{}包含类的主体部分,包括属性和行为

命名规范:类名首字母大写

通过类可以创建实例变量或实例常量

var p1:People = People()

let p2 = People()

People()表示调用了People类的构造器

实例对象通过. 运算符 访问属性和行为

属性

可以带默认值,也可以不带默认值(稍后介绍)

可以是变量,也可以是常量,常量必须有默认值

属性的类型也可以是可选类型

属性可以分成两大类:

存储属性:占用存储空间

行为属性:不占用存储空间,访问属性时实际上是调用方法

静态存储属性:

使用static声明,属于整个类型而不是某个实例对象

通过类名访问静态存储属性

惰性存储属性:(存储属性)

这种属性只有到了一段时间后或某个条件出发后才会存在

在此之前,该属性仅仅是占位,无存储空间

惰性属性实现了类似懒加载的功能(当属性的值需要复杂或大量计算时)

关键字:lazy,必须是变量,必须有初值,如:

class People {

var name:String = ""

lazy var age = 0

func printAge() {

print("age is \(age)")

}

}

var p1:People = People()

p1.printAge()

在创建完p1实例后,通过调试器可以查看到age.storage=nil

在调用printAge()方法后,由于访问到了age属性,通过调试器可以看到age.storage=0

惰性属性的初值通常设定为函数的返回值或对象,以实现懒加载的功能

行为属性:

虽是属性但没有实际存储空间,提供取值访问器get和赋值访问器set

行为属性必须是变量,不能有初值

get的语法:

var 行为属性:类型 {

get{

return 符合类型的值

}

}

可简化为:

var 行为属性:类型 {

return 符合类型的值

}

set的语法:

var行为属性:类型 {

set (newValue) {

//操作

}

}

可简化为:

var 行为属性:类型 {

set {//操作}//省略的参数名默认为newValue

}

如:

class People {

var mindDesc:String = ""

var dream:String = ""

var reality:String = ""

var isHappy:Bool {

get {

if (!dream.isEmpty && dream == reality) || mindDesc == "Happy" {

return true

}

else {

return false

}

}

set(newValue) {

if ( newValue ) {

mindDesc = "Happy"

}

else {

mindDesc = "No Happy"

}

}

}

}

var p1 = People()

p1.isHappy = true

//p1.dream = "中500万"

//p1.reality = "没中奖"

print(p1.mindDesc)

print(p1.isHappy)

如果不提供set赋值访问器,则该属性是只读的,如:

var isHappy:Bool {
if (!dream.isEmpty && dream == reality) || mindDesc == "Happy" {
return true
}
else {
return false
}

}

类行为属性:

类行为属性是一种特殊的行为属性,属于整个类型,而不属于某个实例对象

使用class修饰,通过类名访问

也可称作是静态行为属性(static一般用于结构体、枚举,class用于类类型)

语法: class var 属性名:类型 { get/set{} }

如:

class People {

class var maxHeight:Float {

return 2.40

}

}

print(People.maxHeight)

属性的观察器:

用于检测属性变化的周期,分成willSet和didSet两个观察期

语法:willSet(newValue){} didSet(oldValue) //参数都可以省略

如:

class People {
var salary:Int = 200 {

willSet{

print("工资调整了!")

}
didSet{
if salary > oldValue {
print("涨工资了!")
}
else if salary < oldValue {
print("降工资了!")
}
}
}
}
var p1:People = People()
p1.salary = 300

p1.salary = 150

属性观察器实现了类似KVO模式的功能

属性观察器同样适用于全局变量和局部变量,其中全局变量可理解为省略了lazy的惰性行为变量

方法

方法是与类型相关联的函数,是类应具有的行为动作,与C++/Java这些语言不同的是:在结构体和枚举中都可以定义方法

对象方法:

实例方法通过实例对象通过.运算符调用

如:

class People {
var salary:Int = 200
func receiveSalary(date:String)->Int {
print("发 \(date) 工资了!")
return salary
}
}
var p1:People = People()
var s = p1.receiveSalary("2016年2月")

print("salary is \(s)")

在实例方法内部可以直接访问属性,因为属性的作用域是在类的内部

在实例方法内部可以直接调用实例方法,因为实例方法的作用域是在类的内部

注意:方法也是函数,函数的规则都是支持的

类方法:

与类型属性类似,不属于某个实例对象,而是属于整个类,通过类名调用

语法:class func 方法名(参数列表)->返回值 {}

也称“静态方法”(static用于结构体、枚举,class用于类类型)

如:

class People {
class var desc:String {
return "人类"
}
class func printDesc() {
print("我们是\(desc)")
}

}

People.printDesc()

需要注意的是:在类方法内部,只能访问类行为属性、静态属性和类方法

方法中的self关键字:

在对象方法中,self表示当前实例对象

在类方法中,self表示当前类

下标脚本方法:

是Swift提供的一种特殊对象方法,对象通过下标s运算符调用下标方法

语法:subscript(参数列表)->返回值 { get/set访问器 }

如:

class People {

var names:[Int:String] = [:]

subscript(index:Int)->String? {
get {
return names[index]
}
set {
names[index] = newValue
}
}

}

var p:People = People()
p[001] = "张三"
p[007] = "李四"
print(p[001]!)

print(p[007]!)

下标方法的参数可以是多个,甚至是可变的,不能用inout修饰,不能设置默认参数值

下标方法可以重载,也可以只读,如:

class People {

var names:[Int:String] = [:]

subscript(index:Int)->String? {
get {
return names[index]
}
set {
names[index] = newValue
}
}
subscript(index:Int, appendString:String )->String? {
get {
let s:String? = names[index]!+appendString
return s
}
}

}

var p:People = People()
p[001] = "张三"
p[007] = "李四"

print(p[001]!)

print(p[007, "哈喽"]!)

swift的访问权限

三个访问权限修饰符:private internal public

访问权限的控制不是基于类的,而是基于文件的,即修饰标识符在哪些源文件中可以进行访问

可修饰的标识符:类名、结构体名、枚举名、方法名、属性名等

private:只能在当前的源文件中访问

internal:只能在当前源文件所在的模块中访问(默认权限,可以不写)

public:在任意源文件中都可以访问

本文:Swift2.0对象基础知识点有哪些的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:垃圾回收CMS的过程是怎样的下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18