2017-04-10 70 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

相关问题