2
我正在查看Apple文檔,其中一些方法(如SecItemCopyMatching(::))是用大寫的第一個字母來定義的。方法的慣例不是小寫的第一個字母嗎?爲什麼有些方法用大寫的第一個字母來定義?
我正在查看Apple文檔,其中一些方法(如SecItemCopyMatching(::))是用大寫的第一個字母來定義的。方法的慣例不是小寫的第一個字母嗎?爲什麼有些方法用大寫的第一個字母來定義?
這些函數(不是方法)原本是C
API。它們與Apple的Obj-C API有不同的命名約定。使用Obj-C(或純Swift)API時,大寫名稱是爲類保留的。使用C API不存在類,但前綴標識僞對象(SecItem
)。
需要注意的是,現在將一些C API作爲對象導入到Swift中,例如CGContext
(基於Swift Evolution 0044)。
我只熟悉面向對象的語言,並且理解困難:哪些未被導入爲對象的函數(與'CGContext'不同)適合。例如,Swift中的常規類方法分別通過對象或類型可用。你提到的C函數是否可以通過調用它們的簽名在全球任何地方(沒有對象或類型)提供? –
@ A.Jam是的,在C中它們隨處可用。但是,Swift根據原始框架的名稱爲其提供了一個模塊以供使用。例如,'SecItemCopyMatching'的限定名稱是'Security.SecItemCopyMatching'。請注意,C沒有模塊的概念,因此名稱衝突必須使用前綴來解決(在Obj-C中實際上也是如此)。這就是爲什麼我們有'CoreGraphics'的'CG'前綴等等。 – Sulthan