Swift和OC的命名空间
背景:
为什么需要命名空间?
我们在开发中,组员如果比较多,如果你的类名和其它类名一样,那么在程序编译的时候会报错;那么只能其中一方必须修改类名,如果这个类名使用地方比较多,那么处理起来就很费时
如
Showing Recent Messages:
2 duplicate symbols for architecture x86_64
1.Swift中命名空间
-
Swift语言中是有命名空间的概念,应该是苹果考虑到对上述问题的改进方法
如果Swift项目中,两个类名一样,那么编译也会报错,有命名空间,为啥还会报错,因为这两个类在同一个项目中。
项目目录:
<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中的命名空间
项目目录
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