0
点赞
收藏
分享

微信扫一扫

Swift和OC的命名空间

舍予兄 2021-09-19 阅读 139

背景:

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

Showing Recent Messages:
2 duplicate symbols for architecture x86_64

1.Swift中命名空间

  1. 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

举报

相关推荐

0 条评论