2017-04-10 69 views

回答

6

這些函數(不是方法)原本是C API。它們與Apple的Obj-C API有不同的命名約定。使用Obj-C(或純Swift)API時,大寫名稱是爲類保留的。使用C API不存在類,但前綴標識僞對象(SecItem)。

需要注意的是,現在將一些C API作爲對象導入到Swift中,例如CGContext(基於Swift Evolution 0044)。

+0

我只熟悉面向對象的語言,並且理解困難:哪些未被導入爲對象的函數(與'CGContext'不同)適合。例如,Swift中的常規類方法分別通過對象或類型可用。你提到的C函數是否可以通過調用它們的簽名在全球任何地方(沒有對象或類型)提供? –

+0

@ A.Jam是的,在C中它們隨處可用。但是,Swift根據原始框架的名稱爲其提供了一個模塊以供使用。例如,'SecItemCopyMatching'的限定名稱是'Security.SecItemCopyMatching'。請注意,C沒有模塊的概念,因此名稱衝突必須使用前綴來解決(在Obj-C中實際上也是如此)。這就是爲什麼我們有'CoreGraphics'的'CG'前綴等等。 – Sulthan

相關問題