Skip to content

Commit f9a3ea1

Browse files
committed
Use Unmanaged.passRetained(self).toOpaque() in NSObject.withRetainedReference.
1 parent 030661c commit f9a3ea1

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

Foundation/NSSwiftRuntime.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -331,19 +331,23 @@ extension NSObject {
331331
}
332332

333333
func withRetainedReference<T, R>(_ work: @noescape (UnsafePointer<T>) -> R) -> R {
334-
return work(UnsafePointer<T>(_CFSwiftRetain(unsafeBitCast(self, to: UnsafeMutableRawPointer.self))!))
334+
let selfPtr = Unmanaged.passRetained(self).toOpaque().assumingMemoryBound(to: T.self)
335+
return work(selfPtr)
335336
}
336337

337338
func withRetainedReference<T, R>(_ work: @noescape (UnsafeMutablePointer<T>) -> R) -> R {
338-
return work(UnsafeMutablePointer<T>(_CFSwiftRetain(unsafeBitCast(self, to: UnsafeMutableRawPointer.self))!))
339+
let selfPtr = Unmanaged.passRetained(self).toOpaque().assumingMemoryBound(to: T.self)
340+
return work(selfPtr)
339341
}
340342

341343
func withUnretainedReference<T, R>(_ work: @noescape (UnsafePointer<T>) -> R) -> R {
342-
return work(unsafeBitCast(self, to: UnsafePointer<T>.self))
344+
let selfPtr = Unmanaged.passRetained(self).toOpaque().assumingMemoryBound(to: T.self)
345+
return work(selfPtr)
343346
}
344347

345348
func withUnretainedReference<T, R>(_ work: @noescape (UnsafeMutablePointer<T>) -> R) -> R {
346-
return work(unsafeBitCast(self, to: UnsafeMutablePointer<T>.self))
349+
let selfPtr = Unmanaged.passRetained(self).toOpaque().assumingMemoryBound(to: T.self)
350+
return work(selfPtr)
347351
}
348352
}
349353

0 commit comments

Comments
 (0)