swift3.0与OC的交互注意事项

http://www.cocoachina.com/ios/20160620/16769.html

1.id对应Anyobject 但是所有的Anyobject在swift中是可选值, 如果之前的值为可选值, 在被设置为Anyobject后就是多重可选值了

2.swift 中的闭包默认捕获变量的方式相当于 oc中block中捕获被标记为 __block的变量方式 -> 就是说 闭包捕获到的是变量的指针

3.swift中只要不是在多线程中, 建议使用[unowned self]来避免循环引用, 多线程中, 建议使用[weak self]

4.== 操作符相当于oc中的isEqual: --- 即比较内容是否相等;=== 相当于oc中的指针比较

5.继承自NSObject的子类如果重写了isEquals:方法, 应当提供 hash 这个属性

6.如果在swift中遇到oc中不支持的命名 可以利用 @objc(name)为他(属性 枚举, 方法名...)名个别名     eg.

// MARK:- 事件监听

extensionMainViewController{

    // 事件的监听本质发送消息,但是发送消息是OC的特性

    @objcfileprivatefunccomposeBtnClick() {

         print("composeBtnClick")

    }

}

7.dynamic 将属性或者方法标记为dynamic就是告诉编译器把它当作oc里的属性或方法来使用(runtime),当需要使用 KVO 或者 runtime的时候需要这样处理

8.当使用oc的 perform(selector, with:)方法的时候会返回一个可选值(指向AnyObject的指针);但是使用perform(:on:with:waitUntilDone:modes:) and perform(:with:afterDelay:)不会返回可选值

9.使用 #keyPath() 可以转换为string, #keyPath(class.property) == "property",可用于KVC 例如person.value(forKey: #keyPath(Person.name)) = person.name,

10.@IBDesignable 用在class(UIView的子类)声明的前面, 然后就可以在storyBoard中的inspector编辑它;@IBInspectable 用在(UIView的子类)的属性前面, 然后就可以在storyBoard中的inspector编辑它 ,就想系统提供的可以设置颜色,字体...

11.oc中的 copy属性 转换为swift中的@NSCopying 必须遵守NSCoding协议

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在此特此声明:一下所有链接均来自互联网,在此记录下我的查阅学习历程,感谢各位原创作者的无私奉献 ! 技术一点一点积...
    远航的移动开发历程阅读 13,887评论 12 197
  • 夜微凉,尺素香。星月半央,淡了素妆。 暗思量,自难忘。涕泪两行,湿了华裳。 --题记 窗外的夜,是静谧的凉。微风习...
    c528a9d867cc阅读 1,878评论 0 1
  • 今天地铁做了3小时,公交做了4小时我也是醉了。一句话折腾。 更折腾的是中午吃的东西不对,竟然吐了。要不木耳不熟要不...
    ebf8bf373fdf阅读 715评论 0 0
  • 文/小珞 有时候无聊时选的片子,往往就能给人惊喜,比如这部《28岁未成年》。 冲着老干部霍建华去的,没想的能好看,...
    小珞的碎碎念阅读 4,808评论 2 1
  • 总有种感觉,现在不管是什么,保质期都变得越来越短。 记得自己小时候过冬前;约莫十月份,会看到很多和父母一样穿厂服的...
    管飞机的舒克阅读 2,900评论 1 0