swift 使用心得---未完待续

1.swift的设计目标之一是一门安全的语言(designed for safety),更加清晰明确的访问权限控制可以使程序员表达出更准确的意图,也迫使在编程时候思考更加深入。swift中访问权限依次为:open,public,internal,fleprivate,private.

2.guard语句和if语句相同的是,guard也是基于一个表达式的布尔值去判断一段代码是否应该被执行;与if语句不同的则是guard只有在条件不满足的时候才会执行这一段代码,可以把guard近似的看做是Assert,但是可以优雅的退出而非崩溃。当guard else语句的else执行的时候就是条件满足的情况,guard执行的时候就是条件不满足。

3.在swift中,通过assert实现断言,assert可以帮助开发者比较荣的发现和定位错误,一个断言断定条件是true,通过声明一个断言来确保某个必要条件是满足的,以便继续像往常一样执行,如果不满足了,代码就停止执行,应用也随之停下来。例如:

let number = 3//第一个参数为判断条件,第二个参数为条件"不满足"时的打印信息。assert(number > 3, "number 不大于3")//如果断言被触发(number <= 3时),将会强制结束程序,并打印相关信息:assertion failed: number 不大于3: file /Users/mac/Desktop/test/test/ViewController.swift, line 17

注意点:
断言可以引发程序终止,并不是被设计用来避免不在发生无效情况的。在那些无效条件游客鞥出发的情况下,断言是一种有效的调试手段,可以确保在应用发布之前,在开发过程中就可以关注这些条件。

使用场景:
在条件有可能为false的情况,但是只有在true的情况下才可以继续运行代码,使用断言。比如下面的情况:
  • 自定义整型下标传给自定义索引实现的参数时,下标表达式的值有可能太大或者太小
  • 向函数传值的时候,一个无效值意味着函数不能完成相应的任务
  • 一个Optional类型目前为nil,但是必须要有一个非nil值以便接下来的代码可以成功的执行

4.swift中willSet和didSet这两个特性来监视属性除初始化之外的属性值变化。举例如下:
import Foundation
class People : NSObject
{ //普通属性 var firstName:String = "" var lastName:String = "" var nickName:String = "" //计算属性 var fullName:String { get { return nickName + " " + firstName + " " + lastName } } //带属性监视器的普通属性 var age:Int = 0 { //我们需要在age属性变化前做点什么 willSet { println( "Will set an new value \(newValue) to age" ) } //我们需要在age属性发生变化后,更新一下nickName这个属性 didSet { println( "age filed changed form \(oldValue) to \(age)" ) if age< 10 { nickName = "Little" } else { nickName = "Big" } } } func toString() -> String { return "Full Name: \(fullName) " + ", Age: \(age) " } }var me = People()me.firstName = "Zhang" me.lastName = "San" me.age = 20 println(me.toString())

/*程序输出Will set an new value 20 to ageage filed changed form 0 to 20Full Name: Big Zhang San , Age: 20*/

5.localizable.string 语言本地化,又叫做语言国际化。是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言。往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这就要求应用程序所展示的文字、图片等信息,能够让讲不同语言的用户读懂、看懂。进而提出为同一个应用程序适配多种语言,也即是国际化。具体使用的话这里有一片文章专门讲解这一部分内容:

6.三木运算符:
形式:( ? : ) , " (a<b)?a:b "是一个"条件表达式",它是这样执行的:   如果a<b为真,则表达式取a值,否则取b值.

7.deinit的说明
deinit属于析构函数
析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数
和OC中的dealloc 一样的,通常在deinit和dealloc中需要执行的操作有:
  • 对象销毁
  • KVO移除
  • 移除通知
  • NSTimer销毁

8.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值