原文
// myframework.swift
// 這個檔案存在於 myframework.framework 中
public
class
myclass
}class
myclass
}
在使用時,如果出現可能衝突的時候,我們需要在型別名稱前面加上 module 的名字 (也就是 target 的名字):
myclass.hello()
myframework.myclass.hello()
// hello from framework
另一種策略是使用型別巢狀的方法來指定訪問的範圍。常見做法是將名字重複的型別定義到不同的 struct 中,以此避免衝突。這樣在不使用多個 module 的情況下也能取得隔離同樣名字的型別的效果:
struct myclasscontainer1 }}
struct myclasscontainer2
}}
使用時:
myclasscontainer1.myclass.hello()
myclasscontainer2.myclass.hello()
其實不管哪種方式都和傳統意義上的命名空間有所不同,把它叫做命名空間,更多的是一種概念上的宣傳。不過在實際使用中只要遵守這套規則的話,還是能避免很多不必要的麻煩的,至少唾手可得的是我們不再需要給類名加上各種奇怪的字首了。
原文 字數332
閱讀709
喜歡6列印結果.png
- 這兒的`test`就是namespace,預設的就是專案名.
檢視cfbundleexecutable.png
修改命名空間.png
- 這兒一定要記住:新改的名字不能含有`中文`,不能以`數字`開頭,不能有`-`
// 從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
Swift 命名空間
myframework.swift 這個檔案存在於myframework.framework中 public class myclass class myclass 在使用時,在可能出現衝突的時候,我們需要在型別名稱前面加上module的名字 也就是target的名字 myclass hello m...
Swift建立命名空間
第一種實現方式 原理 1.泛型類 2.泛型協議 3.協議拓展 定義泛型類 public final class ykkit 定義泛型協議 public protocol ykkitcompatible 協議的擴充套件 public extension ykkitcompatible 實現命名空間yk...
Swift建立命名空間
第一種實現方式 原理 1.泛型類 2.泛型協議 3.協議拓展 定義泛型類 public final class ykkit 定義泛型協議 public protocol ykkitcompatible 協議的擴充套件 public extension ykkitcompatible 實現命名空間yk...