记得一开始在学swift的时候已经有学过他们三者的使用实例,但是最近在敲代码还有看一些技术博客的时候发现对他们三者的使用还是有些模糊,所以今天特地抽空搜索了资料学习了一下并做一些记录,加深印象
-
本文笔记主要来自以下两篇文章,万分感谢笔者的分享
-
AnyObejct 类型
类似于OC里边的id类型,可以表示任意类的实例对象;需要注意的是,OC中id可以返回nil,但是在swift中AnyObject的所有方法都会返回Optional的结果。所以如果一个在OC中返回id的类型,转移的swift映射成AnyObject后,最好在取得该值时做可选值是否为空的判断。具体示例在喵神的文章有提及。
- Any 类型
因为在swift中所有的基本类型,包括Array和Dictionary这些都是struct类型,不能由AnyObject来表示,所以便有了Any类型,Any类型除了class以外,还可以表示包括struct和enum在内的所有类型。
- 泛型
简单来说,泛型跟Any类型基本一致,但是泛型比Any多了个判断类型是否一致的功能。 比如下面这个例子,用泛型
修饰的函数就限定了返回值的类型必须与参数x的类型一致的功能。这个小例子也是来自开头说到的那一篇文章
//泛型修饰
func singleGenericFunc<T>(x: T, y: Int) -> T {
....
}
//Any修饰
func singleAnyFunc(x: Any, y: Int) -> Any {
....
}
网友评论