C语言的类型和Swift类型的对应关系
- C语言的基本类型和Swift的对应关系
C 类型 | Swift 对应类型 | 别名 |
---|---|---|
bool | CBool | Bool |
char,unsigned char | CChar, CUnsignedChar | Int8, UInt8 |
short, unsigned short | CShort, CUnsignedShort | Int16, UInt16 |
int, unsigned int | CInt, CUnsignedInt | Int32, UInt32 |
long, unsigned long | CLong, CUnsignedLong | Int, UInt |
long long, unsigned long long | CLongLong, CUnsignedLongLong | Int64, UInt64 |
wchar_t, char16_t, char32_t | CWideChar, CChar16, CChar32 | UnicodeScalar, UInt16, UnicodeScalar |
float, double | CFloat, CDouble | Float, Double |
- C语言的指针类型和Swift中的对应关系
c语言 | swift | 说明 |
---|---|---|
const Type * | UnsafePointer | 指针可变,指针指向的内存值不可变 |
Type * | UnsafeMutablePointer | 指针和指针指向的内存值均可变 |
Type * const * | UnsafePointer | 指针的指针:指针不可变,指针指向的类可变 |
Type * __strong * | UnsafeMutablePointer | 指针的指针:指针可变,指针指向的类可变 |
Type ** | AutoreleasingUnsafeMutablePointer | 自动释放指针 作为OC方法中的指针参数 |
const void * | UnsafeRawPointer | 不可变无类型指针 |
void * | UnsafeMutableRawPointer | 可变无类型指针 |
如何在Swift中使用C语言的宏(Macro)
在OC和C我们通常使用宏做如下几种操作:
-
定义一个常量值 如 #define MAXVALUE 100
-
定义一个较长的对象属性从而减少每次调用的代码量 如 #define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
-
定义一个带参数的宏,类似于一个函数 如 #define RGB_COLOR(r,g,b) [UIColor colorWithRed:r/255.f green:g/255.f blue:b/255.f alpha:1.0]
但对于上面的几种操作,Swift只能处理第一种情况,Swift会自动将使用#define定义常量的宏作为全局常量导入
//在头文件中定义的宏
#define FADE_ANIMATION_DURATION 0.35
#define VERSION_STRING "2.2.10.0a"
#define MAX_RESOLUTION 1268
#define HALF_RESOLUTION (MAX_RESOLUTION / 2)
#define IS_HIGH_RES (MAX_RESOLUTION > 1024)
//当上面的定义宏的头文件通过桥接文件导入进swift的时候,它和下面这些定义的全局变量是等价的
let FADE_ANIMATION_DURATION = 0.35
let VERSION_STRING = "2.2.10.0a"
let MAX_RESOLUTION = 1268
let HALF_RESOLUTION = 634
let IS_HIGH_RES = true
如何在Swift中使用C语言的Struct和Union
Swift会将在C头文件中声明的所有struct和union作为Swift struct 导入。 导入的Swift struct包含每个C struct或者union字段的存储属性和一个初始化程序,其参数与存储的属性相对应。
//C语言中
struct