[iOS][Swift]从Objective-C到Swift,都发生了什么

swift接触不多,只是用来写了一两个简单的项目,今天遇到有人问我,swift和oc究竟是什么区别,居然一时语塞,因为感觉有太多的区别了,但是细想好像又没有想想的那么差剧大,所以总结整理下。

也算是对swift的一个正式介绍吧

1.对比中看差异

[Swift学习: 从Objective-C到Swift](Swift学习: 从Objective-C到Swift)

1.1属性(property)和实例变量(instance variable)

strong: 在Swift中是默认的
weak: 通过weak关键词申明

weak var delegate: UITextFieldDelegate?

readonly,readwrie 直接通过声明常量let,声明变量var的方式来指明
copy 通过@NSCopying指令声明。
值得注意的是String,Array和Dictionary在Swift是以值类型(value type)而不是引用类型(reference type)出现,因此它们在赋值,初始化,参数传递中都是以拷贝的方式进行(简单来说,String,Array,Dictionary在Swift中是通过struct实现的)

1.2 nonatomic

nonatomic,atomic 所有的Swift properties 都是nonatomic。但是我们在线程安全上已经有许多机制,例如NSLock,GCD相关API等。个人推测原因是苹果想把这一个本来就用的很少的特性去掉,线程安全方面交给平时我们用的更多的机制去处理。

2. 单就swift谈未来

具体每一个的内容稍后整理(我承认又遗留东西了...)

2.1 编写高性能的 Swift 代码
polen:
内容对于初学者稍微高深了一点点....
有勇气的点进去看看

2.2 swift 教程合集
polen:
初学者专用

2.3 17条 Swift 最佳实践规范

计算型类型属性(Computed Properties)
当你只需要继承 getter 方法时,返回简单的 Computed 属性即可。例如,应该这样做:

class Example {
    var age: UInt32 {
        return arc4random()
    }
}

而不是:

class Example {
    var age: UInt32 {
        get {
            return arc4random()
        }
    }
}

如果你在属性中添加了 set 或者 didSet ,那么你应该显示地提供 get 方法。

class Person {
    var age: Int {
        get {
            return Int(arc4random())
        }
        set {
            print("That's not your age.")
        }
    }
}

|

2.4 Swift 面试题及其答案raywenderlich.com

就问一个问题 (如果答不上来,请默默点开链接去学习,乖~):

Swift2.0 增加了一个新的关键字来实现递归枚举。下面的例子是一个枚举类型,它在Node条件下有两个相关联的值类型T和List:

enum List{
    case Node(T, List)
}

什么关键字可以实现递归枚举?

你可能感兴趣的:([iOS][Swift]从Objective-C到Swift,都发生了什么)