Swift 2中的指针与Objective-C指针相互传递

Swift 2中的指针与Objective-C指针相互传递,第1张

概述在SWIFT编程中如果想调用C语言编写的函数则需要通过桥接文件来实现。在桥接文件中通常使用的OC代码,在OC中就可以直接 *** 作调用C的函数。 1. 在Swift中读C指针 下面桥接文件中的方法会返回一个int指针,即C术语里面的(int *): @interface PointerBridge : NSObject { int count; } - (int *) getCoun

在SWIFT编程中如果想调用C语言编写的函数则需要通过桥接文件来实现。在桥接文件中通常使用的OC代码,在OC中就可以直接 *** 作调用C的函数。

1. 在Swift中读C指针

下面桥接文件中的方法会返回一个int指针,即C术语里面的(int *):

@interface PointerBrIDge : NSObject {      int count;  }  - (int *) getCountPtr;  @end  @implementation PointerBrIDge - (instancetype) init {      self = [super init];      if(self) {          count = 23;      }      return self;  }  - (int *) getCountPtr {      return &count;  }  @end

在SWIFT中调用桥接文件时可以通过如下方式获得int*的内容。

let brIDge = PointerBrIDge()  let theInt = brIDge.getCountPtr()  print(theInt.memory) 

这里的theInt.memory得到的值就是23。

2. 在Swift中转递C指针给桥接文件

假如oc桥接文件中有如下的一个函数接口

- (voID) setCountPtr:(int *)newCountPtr {      count = *newCountPtr;  }

此时在SWIFT代码中传给setCountPtr函数的参数需为int *类型。在SWIFT中可以通过UnsafeMutablePointer<Int32> 类型来 *** 作。

let brIDge = PointerBrIDge() let theInt = brIDge.getCountPtr() print(theInt.memory)  let newIntPtr = UnsafeMutablePointer<Int32>.alloc(1)  newIntPtr.memory = 100 brIDge.setCountPtr(newIntPtr) print(theInt.memory) // 100

通过这种方式,brIDge中的count就被修改为了100。需要注意的是给UnsafeMutablePointer<Int32>构造方法传入的参数是需要分配空间的对象的个数,在这里只需要一个Int32对象,所以我们传入1即可。

Reference:
http://www.csdn.net/article/2015-09-07/2825641

总结

以上是内存溢出为你收集整理的Swift 2中的指针与Objective-C指针相互传递全部内容,希望文章能够帮你解决Swift 2中的指针与Objective-C指针相互传递所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1071826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存