iOS面试题iOS笔试面试iOS面试题

可能碰到的iOS笔试面试题(9)--Swift

2016-05-04  本文已影响3104人  b485c88ab697

Swift

网上有很多Swift的语法题,但是Swift现在语法还未稳定,所以在这里暂时不贴出语法题,可以自行搜索。

Swift和Objective-C的联系

Swift比Objective-C有什么优势?

Swift的内存管理是怎样的?

Swift支持面向过程编程吗?

举例说明Swift里面有哪些是 Objective-C中没有的?

Swift 是一门安全语言吗?

为什么要在变量类型后面加个问号?

什么是泛型,它们又解决了什么问题?

func areIntEqual(x: Int, _ y: Int) -> Bool {
  return x == y
}
func areStringsEqual(x: String, _ y: String) -> Bool {
  return x == y
}
areStringsEqual("ray", "ray") // true
areIntEqual(1, 1) // true

一个Objective-C开发者可能会采用NSObject来解决问题:

-   import Foundation
-   func areTheyEqual(x: NSObject, _ y: NSObject) -> Bool {
-     return x == y
-   }
-   areTheyEqual("ray", "ray") // true
-   areTheyEqual(1, 1) // true

这段代码能达到了目的,但是编译的时候并不安全。它允许一个字符串和一个整型数据进行比较:

-   areTheyEqual(1, "ray")
//程序可能不会崩溃,但是允许一个字符串和一个整型数据进行比较可能不会得到想要的结果。
采用泛型的话,你可以将上面两个方法合并为一个,并同时还保证了数据类型安全。这是实现代码:
-   func areTheyEqual<T: Equatable>(x: T, _ y: T) -> Bool {
-     return x == y
-   }
-   areTheyEqual("ray", "ray")
-   areTheyEqual(1, 1)```

文章如有问题,请留言,我将及时更正。

满地打滚卖萌求赞,如果本文帮助到你,轻点下方的红心,给作者君增加更新的动力。

上一篇下一篇

猜你喜欢

热点阅读