首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

Swift 與 Objective-C 互操作:C 指針傳遞、內存管理與 UnsafeMutablePointer 實戰

     編輯:關於C

場景

Swift 調用 Objective-C API 時,頻繁遇到 C 指針(int *、void *、函數指針)。Swift 用 UnsafeMutablePointer<T> 系列類型建模。

Objective-C 端暴露指針

let bridge = PointerBridge()
let ptr = bridge.getCountPtr()          // UnsafeMutablePointer
print(ptr.pointee)                      // 23
bridge.setCount(1000)
print(ptr.pointee)                      // 1000,同一內存地址

Swift 創建指針傳給 OC

C/OCSwift說明
int *UnsafeMutablePointer<Int32>可讀寫指針
const int *UnsafePointer<Int32>唯讀指針
void *UnsafeMutableRawPointer無類型指針
&var&var (inout)自動橋接
malloc/freeallocate/deallocate手動內存管理


常見坑與最佳實踐

  • 不要 把 Int 強轉為指針,必須 allocate 分配內存。
  • pointee 訪問值,advanced(by:) 偏移指針(相當於指針算術)。
  • 閉包捕獲指針時注意生命週期,避免懸空指針。
  • 大量指針操作考慮用 withUnsafeMutablePointer 等作用域 API 自動管理。

總結

UnsafeMutablePointer 是 Swift 對 C 指針的類型安全封裝。理解「指針 = 內存地址 + 類型詮釋」,掌握 allocate/deallocate、pointee、withUnsafe... 模式,即可安全高效地與 C/Objective-C 庫互操作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved