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

2017-09-13 08:22:02来源:CSDN作者:maiwc人点击

分享
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 Foundationclass 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 =20println(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 语言本地化,又叫做语言国际化。是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言。往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这就要求应用程序所展示的文字、图片等信息,能够让讲不同语言的用户读懂、看懂。进而提出为同一个应用程序适配多种语言,也即是国际化。具体使用的话这里有一片文章专门讲解这一部分内容:http://www.cnblogs.com/junhuawang/p/6149270.html
6.三木运算符:形式:( ? : ) , "(a<b)?a:b"是一个"条件表达式",它是这样执行的:  如果a<b为真,则表达式取a值,否则取b值.
7.deinit的说明 deinit属于析构函数析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数和OC中的dealloc 一样的,通常在deinit和dealloc中需要执行的操作有:
  • 对象销毁
  • KVO移除
  • 移除通知
  • NSTimer销毁

8.

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台