1. tips
- 1.1在swift中,类名的组成格式是 namespace.类名.比如我们在任意一个控制器的viewDidLoad()方法中打印self,打印结果是:
![](https://i-blog.csdnimg.cn/blog_migrate/aef1d891a333ebdaf6d5f0f243b4e387.webp?x-image-process=image/format,png)
打印结果.png
- 这儿的`Test`就是namespace,默认的就是项目名.
- 1.2. namespace默认是项目名称,同一个命名空间全局共享
2.怎么查看namespace
- namespace在info.plist 对应的是 CFBundleExecutable,我们可以在info.plist中任意右击一行,选中
Show Raw Keys/Values
查看真实的key,如图
![](https://i-blog.csdnimg.cn/blog_migrate/d6a7edd50e66803db01a8a873c7d34ea.webp?x-image-process=image/format,png)
查看CFBundleExecutable.png
3.如何修改namespace
- 如果新建项目时,项目名称中包含有中文,可以进入
是Build Settings
中选中"All", 搜索product name
,即可修改,如图:
![](https://i-blog.csdnimg.cn/blog_migrate/897118cb435438f9b098df737c3fc9c7.webp?x-image-process=image/format,png)
修改命名空间.png
- 这儿一定要记住:新改的名字不能含有`中文`,不能以`数字`开头,不能有`-`
4.如何代码获取命名空间名称,并创建相应的类
// 从info.plist读取namespace
let namespace = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as! String
// 拼接类名的完整格式,即namespace.类名,vcName即控制器的类名
let clsName = namespace + "." + vcName
let cls: AnyClass = NSClassFromString(clsName)!
// 得到相应的控制器
let vc = cls.alloc() as! UITableViewController