Skip to content

Commit 3ac5d25

Browse files
M0rtyMerrfreak4pc
authored andcommitted
once: Use NSRecursiveLock instead of deprecated OSAtomicOr32OrigBarrier (#209)
1 parent 71dc8a2 commit 3ac5d25

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ Changelog
22
=========
33

44
- added `reachedBottom(offset:)` for `UIScrollView`
5+
- `once` now uses a `NSRecursiveLock` instead of the deprecated `OSAtomicOr32OrigBarrier`
56

67
5.0.0
78
-----

Source/RxSwift/once.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,15 @@ extension Observable {
2525
*/
2626

2727
public static func once(_ element: Element) -> Observable<Element> {
28-
var delivered: UInt32 = 0
28+
let lock = NSRecursiveLock()
29+
var isDelivered = false
2930
return create { observer in
30-
let wasDelivered = OSAtomicOr32OrigBarrier(1, &delivered)
31-
if wasDelivered == 0 {
31+
lock.lock()
32+
if !isDelivered {
3233
observer.onNext(element)
3334
}
35+
isDelivered = true
36+
lock.unlock()
3437
observer.onCompleted()
3538
return Disposables.create()
3639
}

0 commit comments

Comments
 (0)