Avatar
#swift-zatsu で話してた件ですが、capture で別名つける方法がいけるか?と思ってやったら予想外の結果に。 class Example { func test() { let f = { [weak weakSelf = self] in guard let `self` = weakSelf else { return } // Set a breakpoint at here print(self) } f() } } Example().test() 今度は謎の結果に… (lldb) po self error: <EXPR>:3:1: error: use of unresolved identifier 'self' self ^~~~ (lldb) fr var (@lvalue example.Example?) weakSelf = 0x00000001009002b0 (example.Example) self = 0x00000001009002b0 {}
8:32 AM
とりあえず、self という名前での変数宣言をやめましょうということですね…
8:32 AM
昔採用していた guard let this = self else { return } は案外賢かったのかもしれない… (edited)