What Can a Hippopotamus be?

ペーペーエンジニアがぼちぼちと技術的なあれこれをアウトプットする場。

try! Swiftメモ: Day1-3 SwiftのPointy Bits

1日目第3セッションは、Pointerについてでした。

普通に開発する分には触れる機会は少ないですが、APIを利用する時にたまに使ったりしますね。

今回はそこまで深く突っ込んだ話ではありませんでしたが、概要や注意点などもきちんと説明されていて良かったです。

セッション内でもあったように、Pointerを上手く扱ってパフォーマンス面の最適化に利用していきたいなーと思いました。

概要

Swiftにおける「Safe」とは

  • Optionalとかあるけど..
    • 使い方によってはクラッシュするよ
      • !とかでunwrapするとクラッシュ
    • Safeとは、型があることによって、予期せぬ動きを守ってくれる意味
  • Swiftの外に出ると、Unsafe~~
    • memory is biteが最小単位
    • withUnSafePointer(&a) { pointer in print(pointer) } で

UnsafePointerType

  • UnsafePointer - メモリアドレスのラッパー
イミュータブル ミュータブル
UnsafePointer UnsafeMutablePointer
Raw UnsafeRawPointer UnsafeMutableRawPointer

Typed - 型タイプ

  • UnsafePointer
  • UnsafeMutablePointer
  • 安全に異なるタイプのメモリにアクセスできる

Raw - Rawタイプ

  • UnsafeRawPointer
  • UnsafeMutableRawPointer
  • ロケーションへアクセスできる

  • Byteレベルで取り扱う

  • 最適化とか行う時に役立つ

Pointerを使う

  • 安全性とスピードのトレードオフになる
  • メモリ割り当て
    • 割り当てた後は必ず外すこと
    • defer { わりあて外し } を使うと良い

誤った使い方 - やってはいけないこと


スポンサードリンク