Avatar
これ変更してCoWに影響でてパフォーマンス変わるか?と懸念していて確かめてみたけどパフォーマンスには影響しなさそう。 import Foundation class Animal {} class Cat: Animal {} protocol Plant {} class Dandelion: Plant {} func address(of object: UnsafeRawPointer) -> String { let addr = Int(bitPattern: object) return String(format: "%p", addr) } let cats = [Cat()] let animals: [Animal] = cats address(of: cats) address(of: animals) // CoWが働いているのでcatsとアドレスは同じ let dandelions = [Dandelion()] let plants: [Plant] = dandelions address(of: dandelions) address(of: plants) // Plantは存在型なのでCoWは働かない? let ints = [1, 2, 3] let oints: [Int?] = ints address(of: ints) address(of: oints) // OptionalでラップするのでCoWは働かない (edited)