swift命名空间

2019-11-22  本文已影响0人  黄金果

[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)

上一篇下一篇

猜你喜欢

热点阅读