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)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容