В соответствии с Используя Swift с Cocoa и Objective-C, вы можете использовать takeUnretainedValue() и takeRetainedValue(), чтобы сообщить Swift, как управлять память объекта для такой функции:
func StringByAddingTwoStrings(CFString!, CFString!) -> Unmanaged<CFString>!
Когда мне нужно использовать takeUnretainedValue() или takeRetainedValue()?
Когда я использую ARC, тогда он всегда takeUnretainedValue()?