I tried this […]
lazy var personalizedGreeting: String = { return self.name }()
it seems there are no retain cycles
Correct.
The reason is that the immediately applied closure {}() is considered @noescape. It does not retain the captured self.
For reference: Joe Groff’s tweet.