在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本篇分为两部分:
一、Swift中的方法嵌套在 swift 中我们可以让方法嵌套方法,如: func appendQuery(var url: String, key: String, value: AnyObject) -> String { func appendQueryDictionary(url: String, key: String, value: [String: AnyObject]) -> String { //... return "result" } func appendQueryArray(url: String, key: String, value: [AnyObject]) -> String { //... return "result" } func appendQuerySingle(url: String, key: String, value: AnyObject) -> String { //... return "result" } if let dictionary = value as? [String: AnyObject] { return appendQueryDictionary(url, key: key, value: dictionary) } else if let array = value as? [AnyObject] { return appendQueryArray(url, key: key, value: array) } else { return appendQuerySingle(url, key: key, value: "value") } }
二、Swift中的命名空间我们之前在使用 OC 开发时,它是没有命名空间的,所有的代码和引用的静态库最终都会被编译到同一个域和二进制中,这样的后果是一旦我们有重复的类名的话,就会导致编译时的冲突和失败。为了避免这种事情的发生,OC 的类型一般都会加上两到三个字母的前缀,比如 MJExtense,MJRefresh,MBProgressHUD 这样。但是前缀并不意味着保证能够不冲突,Swift 使用命名空间后为我们解决了该问题 // MyFramework.swift // 这个文件存在于 MyFramework.framework 中 public class MyClass { public class func hello() { print("hello from framework") } } // MyApp.swift // 这个文件存在于 app 的主 target 中 class MyClass { class func hello() { print("hello from app") } } MyClass.hello() // hello from app MyFramework.MyClass.hello() // hello from framework 另一种策略是使用类型嵌套的方法来指定访问的范围 struct MyClassContainer1 { class MyClass { class func hello() { print("hello from MyClassContainer1") } } } struct MyClassContainer2 { class MyClass { class func hello() { print("hello from MyClassContainer2") } } } // 使用时: MyClassContainer1.MyClass.hello() MyClassContainer2.MyClass.hello() 这样我们就可以避免去使用一些稀奇古怪的前缀了。
|
请发表评论