swift 与 指针初级使用

swift 里面对应C 的基础类型前面加C,CInt、CBool和CChar

UnsafePointer<CChar> 对应C的 const char *;常量指针不可变

UnsafeMutablePointer<CChar> 对应C的 char *;可变指针

下面第一行为String 转 char*;第二行为char* 转String

let sss = UnsafePointer<CChar>("char string..".cStringUsingEncoding(NSUTF8StringEncoding))

print(String.fromCString(sss))

比如下面使用C语言objc/runtime遍历当前类中所有成员变量,使用了UnsafeMutablePointer<UInt32>,对应C里面 unsigned int *varCount

let varCount:UnsafeMutablePointer<UInt32> = UnsafeMutablePointer<UInt32>.alloc(1)
varCount.initialize(0)
let classVars = class_copyIvarList(self.classForCoder, varCount)
for i in 0 ... (Int(varCount.memory)-1){
  let c:Ivar = classVars[i]
  let name = ivar_getName(c)
  let ncc = UnsafePointer<CChar>(  let nsc = String.fromCString(ncc)
  print(nsc)
  let type = ivar_getTypeEncoding(c)
  let tcc = UnsafePointer<CChar>(type)
  let tsc = String.fromCString(tcc)
  print(tsc)
}
free(classVars)

用OC翻译过来可以这样写

unsigned count = 0;
Ivar *vars = class_copyIvarList(c, &count);
for (int i = 0; i < count; i++) {
    Ivar v = vars[i];
    const char *name = ivar_getName(v);
    const char *nameType = ivar_getTypeEncoding(v);
    NSLog(@"==%s==",name);
    NSLog(@"==%s==",nameType);
    NSString *sname = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
}
free(vars);

swift中UnsafePointer<T>可以用.memory取得指针指向的值

let ss: UnsafePointer<CChar> = UnsafePointer<CChar>("b".cStringUsingEncoding(NSUTF8StringEncoding))
NSLog("%c-%d", 67, ss.memory)
时间: 2024-11-07 02:14:33

swift 与 指针初级使用的相关文章

swift 中指针的使用UnsafeMutablePointer

在swift中已经弱化了指针的使用,可以这么使用 1 let s: NSRange = NSMakeRange(0, 1) 2 let at = UnsafeMutablePointer<NSRange>.alloc(100) 3 at .memory = s 4 let b = NSMakeRange(33, 33) 5 at.memory = b 6 print(at.memory) 创建一个pointer之后呢,这一通过.memory来进行赋值操作,,pointer本身是一个地址

指针初级(定义, 初始化, 重指向, 注意事项)

大家好, 今天我们来学习C语言中的指针. 可能大家都听过这么一句话: C语言中其它我学得都很好, 就是指针这一块学得不是太明白, 那么你不如告诉我你没有学过C语言. 这么一句话突出了指针这个概念在C语言当中的重要性. 还有的同学说, 我听别从说C语言当中的指针好难, 特别难理解, 很难学会.那么我告诉大家的是, 指针没有什么难的地方, 那只是你们潜意识这么认为的, 通过今天这节课的学习, 我相信大家都能学会指针, 并且会用指针. 好, 下面开始指针的学习. 在学指针之前, 我先给大家普及一下,

十六、函数指针初级(函数指针与函数调用)

1.函数指针 ①函数在内存中也是有地址的.函数名代表函数的内存地址 ②函数指针是指向函数的指针变量 ③函数存放在代码区 ④函数指针定义与函数声明很相似 ⑤ 函数声明:int maxValue(int x , int y); 函数指针定义:int (*p)(int x , int y); ⑥函数指针剖析 int (*p)(int x , int y) 变量定义三部分: 类型:int (*)(int x , int y) 变量名:p 初值:NULL ⑦函数的地址已经固定了,但是指针变量的地址可以来回

c语言指针初级

1: /* 变量能够使用,就要在计算机中存储起来; */ int main(int argc, const char * argv[]) { int a=10;//栈上的四个字节; //&取地址符,&a表示a的地址 printf("a的地址是:%p\n",&a);//打印a的地址 a的地址是:0x7fff5fbff81c //*间接寻址符 printf("a的地址上的值是:%d\n",*(&a));//打印a的值 a的地址上的值是:1

C语言 --- 函数指针(初级)

1.函数指针:指向函数的指针变量.                 函数在内存中也是有地址的,函数名代表函数的内存地址.    例子:函数:int sum(int a,int b);      int sum(int a,int b){         return a+b;       }       函数名+形参  就是函数      函数指针: 函数指针定义:int(*p)(int a,int b);      技巧,赋值函数声明int sum(int a,int b),将sum括起来加个

Swift 中的指针使用(转)

SWIFT 中  指针被映射为泛型 UnsafePointer<T> UnsafeMutablePointer<T> 表示一组连续数据指针的 UnsafeBufferPointer<T> 表示非完整结构的不透明指针 COpaquePointer 等等 UnsafePointer<T> 通过 memory 属性对其进行取值,如果这个指针是可变的 UnsafeMutablePointer<T> 类型,我们还可以通过 memory 对它进行赋值. fu

Swift 中的指针使用

SWIFT 中  指针被映射为泛型 UnsafePointer<T> UnsafeMutablePointer<T> 表示一组连续数据指针的 UnsafeBufferPointer<T> 表示非完整结构的不透明指针 COpaquePointer 等等 UnsafePointer<T> 通过 memory 属性对其进行取值,如果这个指针是可变的 UnsafeMutablePointer<T> 类型,我们还可以通过 memory 对它进行赋值. 1

swift学习笔记-----swift中的指针

swift语言为了简化,把指针隐形化了.没有像OC中那样的" * ".把底层的问题交给C语言去处理,我们可以在swift中调用C 语言来解决.当然,OC也是可以调用的. 但是在某些场景下,这种调用可能不是很方便.比如,基于字节流的解析中,这时我们所接受的数据是要进行解析,可能用到指针.如果在C中去调用,当然也是可以的.但如果想写的简洁一些,用swift直接去处理这些,是否可以呢.那就要看在swift中是否很好的去使用指针呢. 事实上,swift是支持使用指针的.苹果已经公开了swift

IOS8开发视频教程之:基于Swift实战UI从入门到精通

IOS8开发视频教程之:基于Swift实战UI从入门到精通(5大项目.深入解析拉手团购项目)课程讲师:朱启文课程分类:IOS适合人群:初级课时数量:81课时用到技术:Swift.iOS8涉及项目:移动的图片案例.图片展示案例.汤姆猫案例.拉手团购案例.九宫格案例咨询QQ:1840215592 一.iOS8开发基于Swift实战UI初级课程移动的图片案例(共9课,完成9课)通过该案例,让大家掌握UIButton控件与UIImage区别使用,掌握IB连线的各类方法 tag使用,transform/f