UnsafePointer
常量, 原始指针 (C表达法 Type const*)
UnsafePointer<U>
原始指针 (C表达法 Type *)
UnsafeMutablePointer<U>
初始化
init()
init(Void)
init(COpaquePointer)
init(UnsafePointer<U>)
init(UnsafeMutablePointer<U>)
init(Int)
init(UInt)
提示
public typealias Void = ()
var debugDescription: String { get }
打印内存地址
static
alloc(Int) ->UnsafeMutablePointer< U>
开辟, 以模版类型为
单位
的, 以参数Int为数量
的内存空间
提示
@warn_unused_result
未绑定的返回值予以警告
initialize(U)
初始化
move() ->U
交出所有权
提示
@warn_unused_result
未绑定的返回值予以警告
destroy()
destroy(Int)
销毁对象
dealloc(Int)
销毁开辟的内存空间
subscript (Int) -> U { get nonmutating set }
下标
unsafeBitCast
指针强制转换
提示
@warn_unused_result
未绑定的返回值予以警告
C Code
void * getDisplayBaseAddress() {return (void*)0xB8000000;}
Swift Code
@asmname("getDisplayBaseAddress")
func c_getDisplayBaseAddress() ->UnsafeMutablePointer<Void>
var a :UnsafeMutablePointer<Void> = c_getDisplayBaseAddress()
var b :UnsafeMutablePointer<Int32> = unsafeBitCast(a, UnsafeMutablePointer<Int32>.self)
withUnsafePointer
对变量的指针操作
C Code
void function(long long int const* a){}
Swift Code
@asmname(“function”) func c_function(b :UnsafePointer< Int64>) ->Void
var a :Int64 = 10000
withUnsafePointer(&a, {
(b :UnasfeMutablePointer< Int64>) ->Void in
})
UnsafeBufferPointer
常量, 内存连续的原始指针
UnsafeBufferPointer<>
内存连续的原始指针
UnsafeMutableBufferPointer<>
COpaquePointer
不确定类型的原始指针
COpaquePointer
AutoreleasingUnsafeMutablePointer<>
ManagedBufferPointer<>
关于Swift 调用 C语言
Objective-C 桥接文件 stol-Bridging-Header.h
#import "a.h"
C 头文件 a.h
void * getDisplayBaseAddress();
C 源文件 a.c
#include "a.h"
void * getDisplayBaseAddress() {return (void*)0xB8000000;}
Swift 文件 main.swift
var p :UnsafeMutablePointer<Void> = getDisplayBaseAddress()
var p2 = unsafeBitCast(p, Int.self)
print("0x\(String(p2, radix: 16))")