- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Swift和C语言混合编程教程
Swift和C语言混合编程教程
这篇文章主要介绍了Swift和C语言混合编程教程,介绍基本数据类型对比、指针、常量等内容,需要的朋友可以参考下
作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式。
基本数据类型
Swift 提供了一些和 C 语言的基本类型如char,int,float,double等价的 Swift 基本数据类型。然而,这些 Swift 的核心基本类型之间并不能隐式的相互转换,如 Int。因此,只有你的代码明确要求它们时再使用这些类型,而 Int 可以在任何你想使用它的时候使用。
C 类型
Swift 类型
bool
CBool
char, signed char
CChar
unsigned char
CUnsignedChar
short
CShort
unsigned short
CUnsignedShort
int
CInt
unsigned int
CUnsignedInt
long
CLong
unsigned long
CUnsignedLong
long long
CLongLong
unsigned long long
CUnsignedLongLong
wchar_t
CWideChar
char16_t
CChar16
char32_t
CChar32
float
CFloat
double
CDouble
枚举
Swift 引进了用宏NS_ENUM来标记的任何 C 风格的枚举类型。这意味着无论枚举值是在系统框架还是在自定义的代码中定义的,当他们导入到 Swift 时,他们的前缀名称将被截断。例如,看这个 Objective-C 枚举:
复制代码 代码如下:
//Objective-C
typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
UITableViewCellStyleDefault,
UITableViewCellStyleValue1,
UITableViewCellStyleValue2,
UITableViewCellStyleSubtitle
};
在 Swift 中这样来实现:
复制代码 代码如下:
//Swift
enum UITableViewCellStyle: Int {
case Default
case Value1
case Value2
case Subtitle
}
当您需要指向一个枚举值时,使用以点(.)开头的枚举名称:
复制代码 代码如下:
//Swift
let cellStyle: UITableViewCellStyle = .Default
Swift 也引进了标有NS_OPTIONS宏选项。而选项的行为类似于引进的枚举,选项还可以支持一些位操作,如 &,| 和 ~。在 Objective-C 中,你用一个空的选项设置标示恒为零(0)。在 Swift 中,使用 nil代表没有任何选项。
指针
Swift 尽可能避免让您直接访问指针。然而,当您需要直接操作内存的时候,Swift 也为您提供了多种指针类型。下面的表使用 Type 作为占位符类型名称来表示语法的映射。
对于参数,使用以下映射:
C 句法
Swift 句法
const void *
CConstVoidPointer
void *
CMutableVoidPointer
const Type *
CConstPointerType
Type *
CMutablePointerType
对于返回类型,变量和参数类型的多层次指针,使用以下映射:
C 句法
Swift 句法
void *
COpaquePointer
Type *
UnsafePointerType
对于类(class)类型,使用以下映射:
C 句法
Swift 句法
Type * const *
CConstPointerType
Type * __strong *
CMutablePointerType
Type **
AutoreleasingUnsafePointerType
C 可变指针
当一个函数被声明为接受CMutablePointerType参数时,这个函数可以接受下列任何一个类型作为参数:
?nil,作为空指针传入
?一个CMutablePointerType类型的值
?一个操作数是 Type 类型的左值的输入输出表达式,作为这个左值的内存地址传
您可能关注的文档
- plastic pollution.ppt
- PPT,书籍,你好(新).pptx
- POS机的主动营销 袁杰宏.ppt
- 液相色谱仪的维护与常见故障教程.ppt
- 液压系统维护保养-new教程.ppt
- outstanding linguists语言学家.ppt
- 液相色谱实用技术(一)教程.ppt
- 液压维护保养与故障06教程.ppt
- 涵洞专项施工方案教程.doc
- 涵洞工程技术交底教程.doc
- Module5Unit1Howmany?(课件)英语三年级上册(13).pptx
- 2024年中考物理二轮复习课件电学实验探究 2.pptx
- 21.2电磁波的海洋九年级物理全一册一体化资源(人教版) 3.pptx
- Unit4EverydayeconomicsUsingLanguage语法课件高中英语选择性.pptx
- Module2Unit2MrLiwasateacher(课件)英语五年级下册.pptx
- 6.2怎样描述力沪科版物理八年级上学期【03】.pptx
- 6.1圆周运动课件高一下学期物理人教版(5【04】).pptx
- 一中(东校区)2017-2018学年高二下学期期中考试政治试题.doc
- 7.3重力人教版物理八年级下学期(56).pptx
- 5.2.2一氧化氮与二氧化氮课件高一下学期化学人教版(2【03】).pptx
文档评论(0)