Xcode8和swift3更新后的注意事项

private和fileprivate

自动转换代码以后把我大部分(不知道是不是全部,没统计)private都改成了fileprivate。本来不用private也不会对程序的编译运行有任何影响,private只是为了保证代码外部可读性而准备的,而现在有了fileprivate以后,private变得更加“私有”。现在的private方法和对象,只能在大括号中访问,即便是这个类的extension中,也不能访问private。而fileprivate的作用域,则和以前的private一样,顾名思义,在这个文件中都能访问。

NSData和Data

Data是swift的产物,和Array,Dictionary,Set等类似。NSData的初始化是NSData(XXX),而Data用起来更方便,在需要获取数据的对象后面加上.data,即可获得数据,方便是方便,老代码的修改就比较麻烦了。

NSURLSession和URLSession

URLRequest终于把烦人的Mutable去掉了,那些强迫症不用再因为let xxx = NSMutableXXX是可变的而纠结了。

Any和AnyObject

现在Any貌似可以和AnyObject互相转换了,以前Any对应struct而AnyObject对应class,一些不太复杂的模型用struct编写,和某些方法(参数需要传AnyObject或者class类型的数据)兼容性不好,不得不改为用class编写,这就不符合struct设计的初衷了。

闭包的escaping和non-escaping类型

这个类型决定了闭包是否在调用他的函数(或其他)返回时就销毁(?),escaping是不销毁的意思,non-escaping是保留的意思。一般在网络方法中,闭包一般在其他线程中执行,并且在函数返回时还没有执行完毕,这里种情况应该使用escaping类型。使用方法是在闭包前面加@escaping。反之同理。
那么为什么在swift2之前都不需要加呢,因为swift2之前默认都是escaping类型,而swift3以后默认是non-escaping。在合理的情况下,使用non-escaping类型的闭包更节省内存,而且,在闭包内可以不用再加self关键字了。
参考文章

awakeFromNib方法中获取frame

原来在xib文件中设置约束定宽高约束,在awakeFromNib方法中是可以直接获取到view.frame.size的值的,现在可能因为xib文件中加入了多设备的尺寸设置,已经不能再获取size了。原来frame还跟xib的实际大小有关,现在xib所有的布局都是相对的了,不能再过分依赖frame。顺带说一下,现在如果直接获取size,得到的是(1000.0, 1000.0)。

plist中的privacy key

在iOS旧版本中都会,凡是涉及到隐私相关权限(例如录音、摄像之类的)的访问,都会提示是否允许访问。在plist有一系列privacy - XXXDescription的key作为权限询问提示的文字,旧版iOS中这些是选填的,iOS10里面如果没有填写又访问了相关权限,程序会崩溃。

形如"\(XXX)"在字符串中引用其他对象

在之前的版本中,只有当XXX的类型是optional?,打印结果才会带有"optional",例如:

var XXX: Int? = 1
print("XXX的结果为:\(XXX))  //XXX的结果为:optional(1)

但如果XXX类型为optional!,就不会打印"optional"。
在新版本中,无论类型为!还是?,打印结果都会带有optional,可以在打印时加上!,或者声明时不要声明为optional解决。例如:

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

推荐阅读更多精彩内容