阅读 154

Swift和OC的命名空间

背景:

为什么需要命名空间?
我们在开发中,组员如果比较多,如果你的类名和其它类名一样,那么在程序编译的时候会报错;那么只能其中一方必须修改类名,如果这个类名使用地方比较多,那么处理起来就很费时

Showing Recent Messages:
2 duplicate symbols for architecture x86_64

1.Swift中命名空间

  1. Swift语言中是有命名空间的概念,应该是苹果考虑到对上述问题的改进方法
    如果Swift项目中,两个类名一样,那么编译也会报错,有命名空间,为啥还会报错,因为这两个类在同一个项目中。
    项目目录:


    image.png
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
Command CompileSwiftSources failed with a nonzero exit code

开发中,我们会使用到很多三方库,如果他们库中有和自己名字一样的呢?经过验证Swift中可以编译通过的,这就是命名空间作用体现。
解决方式1:只要是来自不同的命名空间的话,就不会冲突,如自制静态库,三方库。
因此我们可以不添加前缀区分类名。

2.OC中的命名空间

项目目录


image.png

1.程序编译直接报错

Showing Recent Messages:
2 duplicate symbols for architecture x86_64

如果和三方库中的类名一样呢?经过验证也会报错
解决方式1:OC惯用伎俩,加前缀区分业务线
解决方式2:动态framework,编译会警告但是不会报错,可能影响程序调用使用(不采用)

参考链接:
Swift命名空间: https://www.jianshu.com/p/e8bd5b76cb8a

作者:一抹相思泪成雨

原文链接:https://www.jianshu.com/p/1f4be274f96d

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐