您的位置:首页 > 移动开发 > Swift

12、Swift语言中类和结构体的应用

2015-11-02 00:59 567 查看
1、在Swift中在创建类和结构体的实例时,只需要在类名和结构体名后加一个括号,而缺少了new关键字。类和结构体的区别在于类是引用类型而结构体是值类型,引用类型时当实例对象赋值给另一个实例对象后,通过该对象更改其中的属性值时,那么另一个对象也会随之怪边,但是结构体则不会,它是将结构体整个拷贝一份,在更改其中一个值时,另一个则不会改变,如下代码所示:

类:



结构体:



2、lazy关键字的使用,就是在使用的时候才调用,即使在初始化的时候,如果没有使用也不会被初始化,在定义的时候是放在var前边的,如以下代码:


j

3、可读写的计算属性(读属性:get,写属性:set),由于这个比较复杂,因此说明在代码中实现,如以下代码:



4、在第3中说明了读写属性get和set,那么如果设置为只读属性,要把set去掉,那么对应的赋值也要去掉,get也是可以去掉的,如以下代码:

只去掉set而对赋值操作没有去掉,则会报错,如下图所示:



将赋值操作去掉,保留get函数,如下图所示:



去掉get关键字,保留括号,如果center后是一个类或结构体对象则会出错,如下图所示:



不使用get的情况,如下图所示:



5、属性观察器willSet和didSet的使用,willSet观察器就是在设置值之前,会把新设置的属性值传入到willSet观察器中,在设置完成之后又会调用didSet观察器,并将旧的属性值传入到didSet中(注意:如果使用了willSet和didSet则不能在使用set和get),如以下代码所示:



6、注意set、get、willSet、didSet必须是在变量之后的一个大括号内,否则会出错,只要是有这些关键字的都属于计算属性。

7、计算属性和非计算属性的区别就在于计算属性多了et、get、willSet、didSet。

8、静态属性是在对于结构体和枚举类型是用static声明静态属性(支持计算属性和非计算属性),而对于类则需要使用class,目前对于类的静态属性值支持计算属性,不支持非计算属性,static和class是放在var和let前边的,如以下代码:



9、类中方法的参数可分为局部参数和外部参数,其中方法的第一个参数则为局部参数,而从第二个参数开始既可以是局部参数名也可以是外部参数名,如果想让第一个参数作为外部参数,则只需在第一个参数名前加一个加一个和参数名一样的名字,即两个参数名,中间用空格隔开,第一个参数也是外部参数名了,注意:如果第一个参数不作为外部参数使用时,调用参数不能加label,如以下代码所示:



10、类中的self表示它本身,相当于c/c++、java中的this。

11、在Swift中,静态方法称为类型方法,类型方法和类型属性一些样,在结构体和枚举类型中使用static,在class中使用class。

12、Swift类和结构体的构造器名称为init(),如果在没有写构造器编译器会自动加上,该构造器想到与C++的构造函数功能,是对其成员变量进行初始化的作用,并且该构造器可以重载,不过参数名或者参数类型不能相同,否则会出错,并且成员变量必须被初始化,否则会报,如以下代码所示:

正常代码:



错误原因未知,如以下代码:



13、与init相对应得时析构器deinit函数,这里就不在举例了。

14、通过subscript为类和结构体添加下标功能,如以下代码:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: