(discord/swift/2018/03/06/0) SwiftのUnsafeMutablePointerからUnsafePointer型の変換について

概要

  • discord ios dev
    • #swift
    • 2018/03/06-07
  • Swiftのポインタの変換に関する話題

log

koher - 3/6 23:58

↓の UnsafeMutablePointer を UnsafePointer 型の引数に渡せるのってなんでなんでしたっけ?

var a = 42
let p = UnsafeMutablePointer(&a)
func foo(_ p: UnsafePointer<Int>) { print(p.pointee) }
foo(p)

↓これはできないのに。

let p2: UnsafePointer<Int> = p

omochimetaru - 3/6 23:58

暗黙のアップキャスト

関数呼び出しの引数部分に関して

UnsafePointer族にはいろんな変換がある


koher - 3/6 23:59

UnsafePointer 系に特有の言語仕様?


omochimetaru - 3/6 23:59

一般のアップキャストじゃなくて引数評価時だけの特別なやつ


omochimetaru - 3/7 00:00

はい

StringはUnsafePointerになったりしますよ


koher - 3/7 00:00

なるほど。ありがとう


rintaro - 3/7 00:00

developer.apple.com

検証

moaible-swift-memo.hateblo.jp