Avatar
omochimetaru 8/21/2017 1:40 AM
class Cat { init() { print("Cat init(\(ObjectIdentifier(self))") } deinit { print("Cat deinit(\(ObjectIdentifier(self))") } func newCat() -> Cat { return Cat() } } func f0(_ x: Cat) { print("f0") } func main() { print("a") f0(Cat().newCat()) print("b") } main()
1:40 AM
出力 a Cat init(ObjectIdentifier(0x00007fba7251c800) Cat init(ObjectIdentifier(0x00007fba725179b0) Cat deinit(ObjectIdentifier(0x00007fba7251c800) f0 Cat deinit(ObjectIdentifier(0x00007fba725179b0) b
1:41 AM
あまり意識してなかったけど、 メソッド呼び出しされてる Cat()newCat() の呼び出し前に破棄される。