您的位置:首页 >> APPLE >> 和屌丝一起学SWIFT-类和结构体
和屌丝一起学SWIFT-类和结构体
[ 孤狼 | 2016-04-25 12:57:23 | APPLE ]

声  明

       本教程仅用于初学SWIFT同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用SWIFT版本为2.0。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。PAEA.CN版权所有。


Hello,欢迎回到和屌丝一起学SWIFT系列教程中来,上节我们说了枚举,不知道大家有没有学会呢?这节我们来一起学习一个新的很重要的东西-类和结构体.这节很重要,因为你以后会经常用到这些.


类和结构体



[定义类或结构体]

定义一个类或一个结构体,我们分别使用关键字classstruct,并在一个大括号里定义具体的内容.

class Ren{
    var sex="";                     //空字符串属性
    var height = 0;                 //Int类型
    var phoneCode="";
    var home:String?,name:String?;  //连续设置可选为空String属性
}
struct Gou{
    var color:String?;
    var size = 0
}


TIP:定义一个类或一个结构体,其实都是新增一个SWIFT的类型,所以为了统一方便,我们都是用UpperCamelCase方式来书写类或结构体的名称(大写首字母及关键字首字母),Ren.而他们的属性及内部方法的名称我们则采用统一的lowerCamelCase方法来书写(小写首字母,大写关键字首字母),phoneCode.

 


[定义一个实例]

我们如果想要使用一个类或结构体,我们需要把他们变成一个可用的实例.

var nanRen=Ren();
let xiaoGou = Gou();

 


[属性定义]

如何改变一个实例的属性值,有两种办法,一个是在定义实例的时候赋值(仅结构体支持),另一个是直接给一个实例赋值.

let daGou = Gou(color:"白",size: 123);
let nvRen=Ren();
nvRen.sex="女";

 

 

[属性访问]

访问你个属性很容易,这和其他语言没有差距,都是使用 实例.属性 的格式访问.

let huangGou = Gou(color:"黄",size: 123);
print(huangGou.color);
//输出"黄"

 

 

[结构体类型]

表面上结构体和类很像,但是结构体却是一个值类型,可以赋值使用.

struct A{
    var str:String?;
}
var a=A(str:"a");
print(a.str);   //输出"a"
var b=a;
print(b.str);   //输出"a"
b.str="b";
print(a.str);   //输出"a"
print(b.str);   //输出"b"

这里我们可以看出,实例a和实例b是两个完全不一样的实例.

 


[类的类型]

类的类型是引用类型.所以只是传递引用,还是同一个实例

class B{
    var str:String?;
}
var b1=B();
b1.str="我是字符B";
print(b1.str);  //输出"我是字符B"
var b2=b1;
print(b2.str);  //输出"我是字符B"
b2.str="我是b2字符B";
print(b1.str);  //输出"我是b2字符B"
print(b2.str);  //输出"我是b2字符B"

 

 

[何时使用类或结构体]

类和结构体不同,他们一个是值类型,一个是引用类型,所以在使用的时候也是不同的.那么何时使用类,何时使用结构体呢.

当该数据结构的主要目的是用来封装少量相关简单数据值。

当有理由预计该数据结构的实例在被赋值或传递时,封装的数据将会被拷贝而不是被引用。

当该数据结构中储存的值类型属性,也应该被拷贝,而不是被引用。

当该数据结构不需要去继承另一个既有类型的属性或者行为。

如果符合以上条件,那么就是使用结构体.其他的用类.

 

本节代码下载

转载请注明出处:http://gl.paea.cn/apple/content/2016/04/25/90.html