swift命名空间
[TOC]
在OC中并没有命名空间,所以通过cocoapod或者静态库已经自己编写的代码,都会被编译到同一个域和二进制中. 这就回导致如果我们有类名重复, 就会编译失败. 为了避免这种事情发生, OC建议开发者在类名前面添加三个字符前缀, 例如: YYLable .
这样可以解决大部分问题,但是如果你同时使用了A, B俩个三方库, 并且这俩个三方库同时引用了C三方库, C库就会和自己发生冲突了。
#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()
```
[原文链接](https://swifter.tips/namespace/?utm_source=tuicool&utm_medium=referral)