swift语法知识(类结构体,构造函数,值和引用)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift语法知识(类结构体,构造函数,值和引用)相关的知识,希望对你有一定的参考价值。

类和结构体

定义语法:

class SomeClass{

      //定义类的成员
    var  name:String = ""
    var  age:Int = 18
    var job:String?//可选可以为空
}

struct  SomeStruct{

      //定义结构体的成员
    let sex:String = ""
     
}

//通常一个类的实例被称为对象

//实例化类和结构体
let someclass = SomeClass()
let somestruct = SomeStruct()

在Swift语言中,类和结构体有很多相同之处。它们都可以:

● 定义属性来存储值
● 定义方法来提供功能
● 定义初始化器来设置它们的初始化状态
● 可以被扩展,拥有默认实现之外的功能
● 遵从协议来提供一种特定的标准功能

当然也有区别,结构体没有类的继承父类或其他类特性的能力,结构体是值类型,类是引用类型。

类是引用类型

与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝。因此,引用的是已存在的实例本身而不是其拷贝。

结构体和枚举是值类型

值类型被赋予给一个变量、常量或者传递给一个函数的时候,他的值或被拷贝。(Swift 中,所有的基本类型:整数(Integer)、浮点数(floating-point)、布尔值(Boolean)、字符串(string)、数组(array)和字典(dictionary),都是值类型,并且在底层都是以结构体的形式所实现。)

构造器使用init关键字来申明一个构造器,它可以有参数但是构造器没有返回值。

struct Fathernherit {

      var temp:Double

      init(){
     
            temp = 32.0
 
           }

}
var f = Fathernherit()
print("The temp is \(f.temp)  Fathernherit ")

//输出:The temp is 32.0  Fathernherit

类和结构体的选择

但是,结构体实例始终是传值,类实例始终是传递引用,也就是说他们适用于不同类型的任务。我们根据项目的需要考虑数据的结构和功能,决定每个数据类型应该被定义为类还是结构体。
通常的一个规则是符合以下一个或多个条件时考虑使用结构体去定义:
● 这个结构的主要目的是封装少量相对简单的数据的值。
● 结构的实例赋值或传值的时候,封装的值被拷贝而不是引用。
● 任何一个属性被结构体存储时是他们自身值类型,是拷贝而不是引用。
● 结构不需要继承其他类型的属性或行为。
适合使用结构体的例子:
● 描述一个几何形状的尺寸,封装了均为Double类型的宽和高两个属性。
● 描述一个范围,封装了一个Int类型的开始属性和一个Int类型的长度属性。
● 用来描述一个三维坐标系统中的一点,封装了Double类型的x、y和z三个属性。
所有其他情况使用类定义并创建类的实例通过引用方式管理和传递。事实上,大多数的数据结构应该用使用类而不是结构体。

 

从一个界面跳转到另一个界面push有两种方法

1.程序代码实现

let scondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("scondViewController") as! ComicLsitViewController
scondViewController.artistName = label.text!
self.navigationController?.pushViewController(scondViewController,animated:true)

2.storyboard实现

首先点击viewcontroller->Editor->Embed in -> Navigation Controller 下一步就是关联界面如下图。

 

技术分享

 

以上是关于swift语法知识(类结构体,构造函数,值和引用)的主要内容,如果未能解决你的问题,请参考以下文章

Swift初见Swift构造过程

Swift中 Class和Struct的区别

Swift 构造过程

Swift中类和结构体

Swift之深入解析构造过程

Swift-类和结构体