我不敢说swift学了有没有用,可不可以挣更多钱,但这门语言还是比较有意思的。swift骨子里面还是objc,但打扮过,比原来的模样漂亮。个人感觉,苹果还真的想用它取代objc呢。swift 的类型,可以桥接到 objc 的类型,反之亦然。如 string 对应原来objc的NSString, closures对应objc的block,等等。objc 积累下来的大量库,实现不用改写,swift 就直接可以使用。
同一个工程,可以同时使用swift, objc, c, c++ 四种编译语言(额外嵌入的脚本语言另算)
原来的 iOS/Mac 工程,已经可以同时使用objc, c, C++三种语言。现在支持第四种。objc, c, c++三种语言的结合很容易, objc跟c本身就兼容,objc跟c++结合只要将文件名改成.mm。而swift跟其它语言的结合,需要另外的文件进行桥接,其实也挺方便的。
这里的桥接很容易,Apple自家的各种 C 库移植过来了。比如Core Image/Audio,直接包含
import CoreAudio
import CoreImage
就可以使用了。
现在swift完全可以跟objc并存,原来的工程不建议重写,也不用重写。顺其自然,慢慢让它进化就是了。
编程语言的语法重要,但是语法背后的概念更重要。比如面向对象,常用概念无非是,继承,多态,封装,信息隐藏等。继承又可能分成多重继承,接口继承,实现继承。或者还会有些嵌套类,嵌套函数等等。
当明白语法背后的概念,知道为什么需要有这些东西。之后从一门语言切换到另一门有着相同概念的语言,其实很容易。
而语法会影响表达,理论上每门语言都可以表达任何概念。不过当某种概念在某门语言中,很难表达出来,就会倾向于不这样使用它,这种概念在那门语言的社区就难以被人熟知。感觉上,swift有着 obj-c, C++, Ruby的影子。现如今如果你能用swift做出来一个项目,那就你可以跟在公司有2,3年工作的经验的人相比了......,switf的底层其实就是C语言,只不过对C语言的简单的封装而已
下面写了一个swift冒泡排序, 抛砖引玉:
//冒泡排序
func bubbleSort(inout array: [Int])->[Int] {
var flag = true
for (var i = 0; i < array.count - 1 && flag == true; i++) {
flag = false
for (var j = 0; j < array.count - 1 - i; j++) {
if array[j] > array[j + 1] {
let temp = array[j + 1]
array[j + 1] = array[j]
array[j] = temp
flag = true;
}
}
}
return array
}
var array1 = [1, 54, 65, 2, 8]
var array2 = bubbleSort(&array1)
for a in array2 {
print(a)
}