美文网首页
swift命名空间

swift命名空间

作者: 黄金果 | 来源:发表于2019-11-22 13:36 被阅读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)

    相关文章

      网友评论

          本文标题:swift命名空间

          本文链接:https://www.haomeiwen.com/subject/bsnfwctx.html