• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > Swift编程中的初始化与反初始化完全讲解

Swift编程中的初始化与反初始化完全讲解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了swift编程,swift编程语言,swift编程实战 pdf,swift编程入门,编程语言swift亮相等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

初始化
类,结构和枚举当 Swift 声明后准备初始化类实例。初始值被初始化为存储属性,并且新的实例的值也被进一步进行初始化。创建初始化函数的关键字是通过 init() 方法。Swift 初始化不同于 Objective-C,它不返回任何值。其作用是检查新创建的实例的其处理前初始化。Swift 还提供了“反初始化”过程中执行的内存管理操作当实例被释放。

对于存储的属性初始化器的作用
存储的属性处理实例之前初始化类和结构的实例。 存储属性使用初始分配和初始化值,从而消除了需要调用属性观察者。 初始化用于存储属性:

创建初始值

要在属性定义中指定默认属性值

为特定的数据类型,初始化实例 init()方法被使用,init()函数没有传递参数。

语法
init()
{
    //New Instance initialization goes here
}
</div>
示例
struct rectangle {
    var length: Double
    var breadth: Double
    init() {
        length = 6
        breadth = 12
    }
}
var area = rectangle()
println("area of rectangle is \(area.length*area.breadth)")
</div>
当我们使用 playground 运行上面的程序,得到以下结果。

area of rectangle is 72.0
</div>

这里结构 'rectangle' 使用成员长宽高为 “double” 的数据类型进行初始化。init()方法被用于为新创建的成员的长度和初始化double 类型的数值。 计算长方形的面积,并通过调用矩形函数返回。

通过默认设置属性值
Swift 语言提供 init()函数来初始化存储的属性值。此外,用户必须规定默认在声明类或结构的成员初始化属性值。当属性的值在整个程序中时一样时,我们可以在声明部分单独声明它,而不是在 init()中初始化。默认情况下,用户设置属性值时能够继承被定义为类或结构。
struct rectangle {
    var length = 6
    var breadth = 12
}
var area = rectangle()
println("area of rectangle is \(area.length*area.breadth)")
</div>
当我们使用 playground 运行上面的程序,得到以下结果。

area of rectangle is 72.0
</div>

在这里,代替声明长和宽在 init()中,在声明本身时就初始化值了。

参数初始化
在 Swfit 语言用户提供以初始化参数初始化,使用定义作为 init()的一部分。
struct Rectangle {
    var length: Double
    var breadth: Double
    var area: Double
   
    init(fromLength length: Double, fromBreadth breadth: Double) {
        self.length = length
        self.breadth = breadth
        area = length * breadth
    }
   
    init(fromLeng leng: Double, fromBread bread: Double) {
        self.length = leng
        self.breadth = bread
        area = leng * bread
    }
}

let ar = Rectangle(fromLength: 6, fromBreadth: 12)
println("area is: \(ar.area)")

let are = Rectangle(fromLeng: 36, fromBread: 12)
println("area is: \(are.area)")
</div>
当我们使用 playground 运行上面的程序,得到以下结果。

area is: 72.0
area is: 432.0
</div>

局部及外部参数
初始化参数具有类似于的函数和方法参数局部和全局参数名称。局部参数声明用于初始化体,外部参数声明访问用于调用初始化。Swift 函数初始化和方法不同,它们不识别哪些初始化用于该函数调用。

为了克服这个问题,Swift 引入了一个自动外部名称为 init()的每个参数。 这种自动外部名称是等同的每一个初始化参数局部名字之前写入。
struct Days {
    let sunday, monday, tuesday: Int
    init(sunday: Int, monday: Int, tuesday: Int) {
        self.sunday = sunday
        self.monday = monday
        self.tuesday = tuesday
    }
   
    init(daysofaweek: Int) {
        sunday = daysofaweek
        monday = daysofaweek
        tuesday = daysofaweek
    }
}

let week = Days(sunday: 1, monday: 2, tuesday: 3)
println("Days of a Week is: \(week.sunday)")
println("Days of a Week is: \(week.monday)")
println("Days of a Week is: \(week.tuesday)")

let weekdays = Days(daysofaweek: 4)
println("Days of a Week is: \(weekdays.sunday)")
println("Days of a Week is: \(weekdays.monday)")
println("Days of a Week is: \(weekdays.tuesday)")

</div>
当我们使用 playground 运行上面的程序,得到以下结果。

Days of a Week is: 1
Days of a Week is: 2
Days of a Week is: 3
Days of a Week is: 4
Days of a Week is: 4
Days of a Week is: 4
</div>

不带外部名称参数
当外部名称不需要一个初始化下划线“_”,这是用来覆盖默认行为。
struct Rectangle {
    var length: Double
   
    init(frombreadth breadth: Double) {
        length = breadth * 10
    }
   
    init(frombre bre: Double) {
        length = bre * 30
    }
   
    init(_ area: Double) {
        length = area
    }
}

let rectarea = Rectangle(180.0)
println("area is: \(rectarea.length)")

let rearea = Rectangle(370.0)
println("area is: \(rearea.length)")

let recarea = Rectangle(110.0)
println("area is: \(recarea.length)")
</div>
当我们使用 playground 运行上面的程序,得到以下结果。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Swift编程中的初始化与反初始化完全讲解
  • Swift 编程语言入门教程
  • Swift hello world!Swift快速入门教程
  • 苹果公司编程语言Swift语言简介

相关文章

  • 2017-05-28Swift面试题及答案整理
  • 2017-05-28Swift中的类class与结构体struct体学习笔记
  • 2017-05-22Swift 属性
  • 2017-05-28Swift之UITabBarController 导航控制器的自定义
  • 2017-05-28Swift操作Quartz 2D进行简单的绘图与坐标变换的教程
  • 2017-05-28解决Android Studio安装后运行出错dose not...和Internal error...
  • 2017-05-28Swift开发之使用UIRefreshControl实现下拉刷新数据及uirefreshcontrol使用
  • 2017-05-28详解Swift中的数据类型类型转换
  • 2017-05-28Swift项目中利用SWRevealViewController实现侧滑菜单
  • 2017-05-28Swift中Optional值的链式调用学习笔记

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 程序迁移到swift 3.0的一些实用技巧
    • Swift中使用可选类型完美解决占位问题
    • 使用Swift实现iOS App中解析XML格式数据的教程
    • Swift3.0仿支付宝二维码扫描效果
    • Swift 函数
    • Swift 3.0基础学习之闭包
    • 用Swift编写自动录音器
    • 查看import的类是出自哪个jar包的方法
    • Swift中用到extension的一些基本的扩展功能讲解
    • Swift学习笔记之元组(tuples)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有