Swift 2中的指针与Objective-C指针相互传递
发布时间:2020-12-14 06:43:04 所属栏目:百科 来源:网络整理
导读:在SWIFT编程中如果想调用C语言编写的函数则需要通过桥接文件来实现。在桥接文件中通常使用的OC代码,在OC中就可以直接操作调用C的函数。 1. 在Swift中读C指针 下面桥接文件中的方法会返回一个int指针,即C术语里面的(int *): @interface PointerBridge : NS
在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)
这里的 2. 在Swift中转递C指针给桥接文件假如oc桥接文件中有如下的一个函数接口 - (void) setCountPtr:(int *)newCountPtr {
count = *newCountPtr;
}
此时在SWIFT代码中传给 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。需要注意的是给 Reference: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |