Swift3.0基础知识点

swift3.0的简单知识点 

1. optional里 let没有默认值  var 默认值是nil 

2.三目运算跟oc一样:

let sanmu = 9

sanmu > 6 ? print("大了") : print("小了")

如果不想执行后面的 print("小了") 用()代替 // ()为执行空

3. ?? 简单的三目运算 如果前面有值 就用值 没有 就用后面的值 

!!(1).注意 ??最好用 ()括起来 因为优先级低 (2).测试发现值必须是optional类型

4. if let/var  可以避免解包. 外部不能使用if let/var里创建的变量 ; guard let/var 如果变量为false 才走{} ,外部可以使用创建的变量,内部不可以使用新的变量

5. as 是做类型转换

6.形参列表3.0做了优化:

(1). func sum(x:Int,y:Int){} //基本函数 

(2).func sum(value1 x:Int ,value2 y:Int){} //显示前缀

(3). func sum(_ x:Int,_ y:Int){} //不显示前缀 

(4).func sum(x:Int=2,y:Int=3){}//设置默认值,设置默认值后 运用的时候可以不传值

(5).func sum(x:inout Int,y:inout Int)() //类型前加inout 可在函数内部改动形参值 传入的值为指针//&

(6).多个相同的类型的时候 可以在类型后面加...  实现用for遍历

(7). 函数类型 可以根据相同的类型返回不同函数

(8). 函数可嵌套使用 就是一个函数里可放多个函数

7. 闭包的使用: 

(1). 先定义属性  var backClosure:((String)->Void)? 

(2). 调用 self.backClosure(label.message?)

(3). 实现 self.backClosure = {(message:String)->Void in print(message!) } //  {形参列表 + 返回值 + in + 打印} 

8.weak 只能修饰var 不能修饰let ; 解包有两种方式: 1. ? 2. ! ,?不计算 !计算

9.防止循环引用的方法 (1)weak var weakSelf = self; (2){ [weak self] in print(self?.view)}; (3){[unowned self] in print(self.view)}.

10. (1).属性如果是对象,一般都是可选的 .在需要的时候创建,可避免写构造函数

(2).基本类型 要有默认值 

(3).如果设置为private 外部就不能用了

11. guard 语法可避免强行解包

12.遍历构造函数: 只做判断,不做创建 如果设置属性需要放在创建之后 

用法: convenience init?(){  self.init() kvc赋值 }

13. model类防止崩溃小技巧 :(1). 对象属性用可选"var",可以防止在构造函数里写初始化 (2). 基本类型属性设置初始值 (3).需要使用kvc设置的属性 不能添加private修饰符

14. as?和as! : 完全根据前面的类型来判断 如果是必须有的值  用as! 如果可选 用as?. if let 和 guard let 做类型转换的时候必须用as? 不然的话就不用做判断了

15. 闭包调用的时候用? 不要用!  // block?() --问号可以判断是否存在

16. 懒加载 (1). lazy var tempLabel:LYTempLabel = LYTempLabel() //避免使用! ? 来区分是否已经创建 ;

(2). 全面点写法是 lazy var tempLabel = { ()->LYTempLabel in let label = LYTempLabel() return label }() ; (3). 只有在第一次运行时候创建一次 赋值给属性 =nil后再用不会再创建. 所以一般不要主动释放懒加载的属性

17. 反射机制 :NSClassFromString() 目的是为了解耦

18. try的用法 (1). try?//推荐使用  有值则返回值 没值则返回nil (2).try! 不推荐 没值崩溃 (3).do{ try....}catch{print(error)}

19. 枚举 enum XXXType{ case XXX case XXX }

20. 数组的闭包函数 :

var numberArr = [1,2,3,4,5,6]

(1). map (映射) numberArr.map{(number:Int)->Int in return number+1}

(2).filter (过滤器)numberArr.filter{ (value) -> Int in return value>2}

(3).reduce numberArr.reduce(0) { (value1, value2) -> Int in return value1+value2} return的值是结果 参数一是结果 参数二是值 

21. description 的用法 

override var description:String { let dic = [xx,xx,xx]//属性 return dictioinaryWithValues(forKeys:dic).description }

22. 子类如果没有构造函数 可以使用父类的构造函数,子类有构造函数,父类的便不能使用

23.  subscript 用法 给对象添加个下标取值的方法 :

var number:[Int] = [] ; subscript(index:Int)->Int{ set{number[index] = newValue} get{ return number[index] } }

24. 协议 protocol 里  mutating func action() mutating作用: 可以在该方法里修改自己和自己的属性 类继承可以不用写 mutating , enum或struct 必须要有mutating

25. 协议构造器 声明: init(value:Int) 在类里的实现在构造器前必须加required, (如果类已经被标记为final 就不需要再构造器的实现中使用required 因为final类不能有子类)

26. flatMap 和map的区别 map把元素处理下返回可选的元素 flatmap 会过滤掉nil的元素 返回的元素是确定的 不是optional, 并且做了减维 [[1,2,3],[4,5,6]] .flatmap{return $0 +2} 返回的是 [3,4,5,6,7,8] map的话返回的是[[3,4,5],[6,7,8]]

27.访问权限依次是 open public internal fileprivate private  swift3 新增open fileprivate

28. required用法 1、用于构造函数。2、子类如果有构造函数,必须实现父类标记required的构造函数。3、如果子类没有构造函数,不用实现父类的构造函数

29. convenience 修饰的初始化方法,子类需要重写父类在convenience里调用的初始化方法,才可以使用父类的convenience方法。如果想让父类的convenience方法可以一直使用,可以在指定的初始化方法前设置required

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容