profile
viewpoint
ReactiveCocoa http://reactivecocoa.io A framework for composing and transforming streams of values

ReactiveCocoa/ReactiveCocoa 19837

Cocoa framework and Obj-C dynamism bindings for ReactiveSwift.

ReactiveCocoa/ReactiveSwift 2627

Streams of values over time

ReactiveCocoa/ReactiveObjC 2236

The 2.x ReactiveCocoa Objective-C API: Streams of values over time

ReactiveCocoa/ReactiveViewModel 1967

Model-View-ViewModel, using ReactiveCocoa

ReactiveCocoa/ReactiveCocoaLayout 685

Reactive layout framework built on top of ReactiveCocoa

ReactiveCocoa/ReactiveAnimation 301

Declarative animations using ReactiveCocoa signals

ReactiveCocoa/RockemSockem 255

A simple WebSocket server

ReactiveCocoa/ReactiveCocoaIO 82

Reactive file management framework built on top of ReactiveCocoa

ReactiveCocoa/ReactiveObjCBridge 59

Bridge between ReactiveObjC and ReactiveSwift

ReactiveCocoa/EditableProperty 50

Multi-way bindings for ReactiveCocoa

Pull request review commentReactiveCocoa/Loop

Add `pause` and `resume` API's to `Loop`

 final class Floodgate<State, Event>: FeedbackEventConsumer<Event> {         dispose()     } -    func bootstrap(with feedbacks: [FeedbackLoop<State, Event>.Feedback]) {+    func bootstrap(with feedbacks: [Loop<State, Event>.Feedback]) {+        self.feedbacks = feedbacks++        for feedback in feedbacks {+            // Pass `producer` which has replay-1 semantic.+            feedbackDisposables += feedback.events(producer, self)+        }++        reducerLock.perform {+            drainEvents()+        }+    }++    func unplugFeedbacks() {+        feedbackDisposables.dispose()+        feedbackDisposables = CompositeDisposable()+    }++    func replugFeedbacks() {

thought about simply invoking bootstrap(with:) again from the Loop, but decided that the Floodgate should be the one retaining the feedbacks. It also allowed having a symmetrical API (unplug/replug)

However the Loop being the one retaining the feedbacks also seems like a valid approach.

p4checo

comment created time in 2 hours

Pull request review commentReactiveCocoa/Loop

Add `pause` and `resume` API's to `Loop`

 internal class ScopedLoopBox<RootState, RootEvent, ScopedState, ScopedEvent>: Lo             event: { [eventTransform] in eventTransform(event($0)) }         )     }++    override func pause() {+        root.pause()

not sure about this approach, as this way one scoped LoopBox will have the "power" to pause the root (parent), and as a consequence all other sibling scoped loop boxes.

p4checo

comment created time in 2 hours

Pull request review commentReactiveCocoa/Loop

Add `pause` and `resume` API's to `Loop`

 final class Floodgate<State, Event>: FeedbackEventConsumer<Event> {         dispose()     } -    func bootstrap(with feedbacks: [FeedbackLoop<State, Event>.Feedback]) {+    func bootstrap(with feedbacks: [Loop<State, Event>.Feedback]) {+        self.feedbacks = feedbacks++        for feedback in feedbacks {+            // Pass `producer` which has replay-1 semantic.+            feedbackDisposables += feedback.events(producer, self)+        }++        reducerLock.perform {+            drainEvents()+        }+    }++    func unplugFeedbacks() {

not sure about the naming, so I am open to suggestions 😇

p4checo

comment created time in 2 hours

PR opened ReactiveCocoa/Loop

Add `pause` and `resume` API's to `Loop`

Motivation

On some scenarios, it's useful to "pause" the Loop so that we stop processing events for some reason (e.g. to stop a Loop backed Service). Following the same reasoning, it becomes necessary to have a "resume" mechanism so that the Loop starts processing events again.

Given Loop now starts automatically and stop is designed as a tear down mechanism to be used on dealloc and dispose all observations, some new API's are required so that we can unplug/replug feedbacks to achieve the above mentioned pause/resume behavior.

⚠️ Note: Tests missing, as I wanted to validate the approach first 🙏

Changes

  • Create new unplugFeedbacks and replugFeedbacks API's in Floodgate, which disposes feedbacks observations and restores them, respectively. Floodgate now retains the feedbacks passed in on bootstrap to use them on replugFeedbacks.

  • Add pause and resume API's to LoopBoxBase.

  • Implement pause and resume API's in RootLoopBox, which unplug and replug the feedbacks on the Floodgate, respectively.

  • Implement pause and resume API's in ScopedLoopBox, which forward the calls to their root, respectively.

  • Fixed .podspec to include swift files from all folders.

+50 -3

0 comment

4 changed files

pr created time in 2 hours

fork p4checo/Loop

Composable unidirectional data flow with ReactiveSwift.

fork in 4 hours

startedReactiveCocoa/ReactiveSwift

started time in a day

startedReactiveCocoa/ReactiveCocoa

started time in a day

startedReactiveCocoa/ReactiveObjC

started time in a day

fork hitman91028/ReactiveCocoa

Cocoa framework and Obj-C dynamism bindings for ReactiveSwift.

fork in 2 days

startedReactiveCocoa/ReactiveCocoa

started time in 2 days

push eventReactiveCocoa/Loop

sergdort

commit sha 2ac0b445d621b437d3a344f1e94ace08d2a9e27b

Add more tests

view details

push time in 2 days

PR opened ReactiveCocoa/Loop

Anders/first value after nil

Pick up again the plan to deprecate Feedback(predicate:effects:).

This PR deprecates:

  • Feedback.init(effects:)
  • Feedback.init(predicate:effects:)

and replace them with:

  • Feedback.init(whenBecomesTrue:effects:)
  • Feedback.init(firstValueAfterNil:effects:)

The experience of RAF/Loop production use has supported well that the replacements here have more desirable semantics. They also support real world use cases better, especially when the state is a product type value with states often only being partially invalidated.

  • [ ] Unit tests
+94 -22

0 comment

1 changed file

pr created time in 3 days

create barnchReactiveCocoa/Loop

branch : anders/first-value-after-nil

created branch time in 3 days

PR opened ReactiveCocoa/Loop

Scope only event type, and erase event type. enhancement

Introduce the convenience to scope only the event type:

enum WeatherUserAction {
  case refresh, retry, ...
}

enum WeatherEvent {
  case didFetch, ...
  case user(WeatherUserAction)
}

let internal: Loop<WeatherState, WeatherEvent>

let state = internal.scoped(event: WeatherEvent.user)
print(type(of: state)) // OUT: Loop<WeatherState, WeatherUserAction>

Also a convenience to erase the event type completely:

let internal: Loop<WeatherState, WeatherEvent>

let state = internal.eraseEventType()
print(type(of: state)) // OUT: Loop<WeatherState, Never>
+28 -12

0 comment

3 changed files

pr created time in 3 days

create barnchReactiveCocoa/Loop

branch : anders/scoping-event-type

created branch time in 3 days

PR opened ReactiveCocoa/Loop

Fix a deadlock when `Loop.producer` is started recursively. bug

The deadlock is fixed by using a recursive lock, so that Loop.producer can be reentrant.

Having said that, event draining must remain non-reentrant, where reentrant calls must continue not to attempt to drain the event queue. So refactoring is done in Floodgate to deal with reentrancy appropriately for the event queue.

+127 -46

0 comment

3 changed files

pr created time in 3 days

create barnchReactiveCocoa/Loop

branch : anders/fix-deadlock

created branch time in 3 days

startedReactiveCocoa/ReactiveObjC

started time in 3 days

startedReactiveCocoa/ReactiveCocoa

started time in 3 days

fork SLWLHH/ReactiveObjCBridge

Bridge between ReactiveObjC and ReactiveSwift

fork in 3 days

startedReactiveCocoa/ReactiveCocoa

started time in 4 days

startedReactiveCocoa/ReactiveObjC

started time in 4 days

startedReactiveCocoa/Loop

started time in 5 days

startedReactiveCocoa/ReactiveSwift

started time in 7 days

push eventReactiveCocoa/Loop

Anders Ha

commit sha d87e9a658d2d3f23c82987ac64b3dc08f75c8052

Change SwiftUI wrappers to use a shared cache bound to the main runloop.

view details

push time in 7 days

push eventReactiveCocoa/Loop

Anders Ha

commit sha 589be15f24a7f6d09b36b18309559401050f54dd

Change SwiftUI wrappers to use a shared cache bound to the main runloop.

view details

push time in 7 days

pull request commentReactiveCocoa/Loop

Change SwiftUI wrappers to use a shared cache bound to the main runloop.

Probably overcomplicated this. Could achieve the same effect by abolishing MainThreadLoopBox but keeping objectWillChange. 🤔

andersio

comment created time in 7 days

PR opened ReactiveCocoa/Loop

Change SwiftUI wrappers to use a shared cache bound to the main runloop.

RootLoopBox now internally creates & holds onto a "main thread view", aka MainThreadLoopBox, to serve the SwiftUI bindings @LoopBinding and @EnvironmentLoop.

MainThreadLoopBox subjects its state copying from RootLoopBox to the main queue scheduling. This allows state reads on the main thread always see a consistent value in the same runloop iteration through the MainThreadLoopBox. All @LoopBinding and @EnvironmentLoop are ultimately served by the same MainThreadLoopBox per loop.

This is an aftermath of the WWDC 2020 SwiftUI session on data flows, which stated that @ObservedObject does not have a strong ownership on the object in WWDC 2020. The intended mechanism @StateObject for such use case is available only on iOS 14.0+.

+206 -84

0 comment

9 changed files

pr created time in 7 days

push eventReactiveCocoa/Loop

Anders Ha

commit sha d87e9a658d2d3f23c82987ac64b3dc08f75c8052

Change SwiftUI wrappers to use a shared cache bound to the main runloop.

view details

push time in 7 days

create barnchReactiveCocoa/Loop

branch : anders/swiftui-fix

created branch time in 7 days

issue commentReactiveCocoa/ReactiveCocoa

Crash during runloop's autorelease pool drain on macOS 10.15 Catalina

Thanks for the update @andersio! Not sure if I follow, though. Are you saying this is more of an implementation problem/challenge, and not something for the end user to be concerned about?

We probably also need field reports/tests on how RAC is doing with iOS 14 and macOS 11 as min deployment, since both contain some new Objective-C runtime changes.

True. If I come across anything else I'll certainly let know.

ianbytchek

comment created time in 7 days

issue commentReactiveCocoa/ReactiveCocoa

Crash during runloop's autorelease pool drain on macOS 10.15 Catalina

@ianbytchek The issue stands on its own in an environment having only RAC. So I am fairly confident it is not a user-end error.

ianbytchek

comment created time in 7 days

startedReactiveCocoa/ReactiveCocoa

started time in 7 days

fork y0unghe/ReactiveObjC

The 2.x ReactiveCocoa Objective-C API: Streams of values over time

fork in 7 days

startedReactiveCocoa/ReactiveObjC

started time in 8 days

startedReactiveCocoa/ReactiveObjC

started time in 8 days

startedReactiveCocoa/ReactiveObjC

started time in 8 days

startedReactiveCocoa/ReactiveObjC

started time in 9 days

startedReactiveCocoa/ReactiveCocoa

started time in 9 days

startedReactiveCocoa/ReactiveCocoa

started time in 10 days

startedReactiveCocoa/ReactiveCocoa

started time in 10 days

startedReactiveCocoa/ReactiveViewModel

started time in 10 days

startedReactiveCocoa/ReactiveCocoa

started time in 12 days

startedReactiveCocoa/ReactiveObjC

started time in 12 days

startedReactiveCocoa/ReactiveCocoa

started time in 13 days

fork sunwell/ReactiveViewModel

Model-View-ViewModel, using ReactiveCocoa

fork in 13 days

startedReactiveCocoa/ReactiveObjC

started time in 13 days

fork twoconk/ReactiveObjC

The 2.x ReactiveCocoa Objective-C API: Streams of values over time

fork in 13 days

startedReactiveCocoa/ReactiveObjC

started time in 13 days

startedReactiveCocoa/ReactiveCocoa

started time in 13 days

fork freedom-shen/ReactiveObjC

The 2.x ReactiveCocoa Objective-C API: Streams of values over time

fork in 14 days

issue commentReactiveCocoa/ReactiveSwift

[__SwiftNativeNSError release]: message sent to deallocated instance 0x600000c83160

I noticed the same problem [__SwiftNativeNSError release]: message sent to deallocated instance. The crash occurs in ReactiveSwift after sending to the observer. The problem originates from an Enum conforming to Swift.Error which is being being cast to NSError. Here is my stacktrace:

- 0 : "0   ???                                 0x00000001079d056c 0x0 + 4422698348"
  - 1 : "1   MyApp                               0x0000000104eae8b8 main + 0"
  - 2 : "2   MyApp                               0x0000000104def17c $s18MyApp_iOS9AppActionOwxx + 924"
  - 3 : "3   ReactiveSwift                       0x0000000105d286e0 $s13ReactiveSwift6SignalC8ObserverC5value6failed9completed11interruptedAEyxq__GyxcSg_yq_cSgyycSgAMtcfcyAC5EventOyxq__GcfU_ + 296"
  - 4 : "4   ReactiveSwift                       0x0000000105d28850 $s13ReactiveSwift6SignalC8ObserverC5value6failed9completed11interruptedAEyxq__GyxcSg_yq_cSgyycSgAMtcfcyAC5EventOyxq__GcfU_TA + 48"
  - 5 : "5   ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 6 : "6   ReactiveSwift                       0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
  - 7 : "7   ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 8 : "8   ReactiveSwift                       0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
  - 9 : "9   ReactiveSwift                       0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
  - 10 : "10  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 11 : "11  ReactiveSwift                       0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
  - 12 : "12  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 13 : "13  ReactiveSwift                       0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
  - 14 : "14  ReactiveSwift                       0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
  - 15 : "15  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 16 : "16  ReactiveSwift                       0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
  - 17 : "17  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 18 : "18  ReactiveSwift                       0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
  - 19 : "19  ReactiveSwift                       0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
  - 20 : "20  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 21 : "21  ReactiveSwift                       0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
  - 22 : "22  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 23 : "23  ReactiveSwift                       0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
  - 24 : "24  ReactiveSwift                       0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
  - 25 : "25  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 26 : "26  ReactiveSwift                       0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
  - 27 : "27  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 28 : "28  ReactiveSwift                       0x0000000105d2b034 $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_ + 444"
  - 29 : "29  ReactiveSwift                       0x0000000105d3071c $s13ReactiveSwift6SignalCA2A0C19ProducerConvertibleRz5ErrorQzRs_rlE17observeConcurrent33_6345D8752C3E65AA1118F4C784F9873DLLyAA10Disposable_pSgAC8ObserverCy5ValueQzq__G_SuAA8LifetimeCtF17startNextIfNeededL_yyAaDRzAFRs_r0_lFyACyANq_G_AaI_ptXEfU0_yAC5EventOyANq__GcfU_TA + 40"
  - 30 : "30  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 31 : "31  ReactiveSwift                       0x0000000105cf6290 $s13ReactiveSwift6SignalC4Core33_6DF632AE8A9288C3EAD8EFDF3D3AF99ELLC4sendyyAC5EventOyxq__GF + 496"
  - 32 : "32  ReactiveSwift                       0x0000000105d27f48 $s13ReactiveSwift6SignalC8ObserverC4sendyyAC5EventOyxq__GF + 20"
  - 33 : "33  ReactiveSwift                       0x0000000105d10110 $s13ReactiveSwift15TransformerCore33_8C2AEE826CBF26B7535B1491D314A4F4LLC5startyAA10Disposable_pAA6SignalC8ObserverCyxq__GAaF_pXEFAJyq0_q1__GAaF_pXEfU_yAH5EventOyxq__GcfU_ + 84"
  - 34 : "34  ReactiveSwift                       0x0000000105d3e878 $s13ReactiveSwift6SignalC5EventO3mapyyAEyxq__GcyAEyqd__q__Gc_AA8LifetimeCtcqd__xclFZyAGcyAHc_AJtcfU_yAGcfU_ + 412"
  - 35 : "35  ReactiveSwift                       0x0000000105d48eb4 $s13ReactiveSwift6SignalC5EventO10attemptMapyyAEyxq__GcyAEyqd__q__Gc_AA8LifetimeCtcs6ResultOyqd__q_GxclFZyAGcyAHc_AJtcfU_yAGcfU_TATm + 40"
  - 36 : "36  ReactiveSwift                       0x0000000105d3e878 $s13ReactiveSwift6SignalC5EventO3mapyyAEyxq__GcyAEyqd__q__Gc_AA8LifetimeCtcqd__xclFZyAGcyAHc_AJtcfU_yAGcfU_ + 412"
  - 37 : "37  ReactiveSwift                       0x0000000105d48eb4 $s13ReactiveSwift6SignalC5EventO10attemptMapyyAEyxq__GcyAEyqd__q__Gc_AA8LifetimeCtcs6ResultOyqd__q_GxclFZyAGcyAHc_AJtcfU_yAGcfU_TATm + 40"
  - 38 : "38  ReactiveSwift                       0x0000000105d48090 $s13ReactiveSwift6SignalC5EventO5delay_2onyAEyxq__GcyAHc_AA8LifetimeCtcSd_AA13DateScheduler_ptFZyAHcyAHc_AJtcfU_yAHcfU0_yycfU0_TA + 52"
  - 39 : "39  ReactiveSwift                       0x0000000105d55524 $s13ReactiveSwift14QueueSchedulerC8schedule5after6actionAA10Disposable_pSg10Foundation4DateV_yyctFyycfU_TA + 60"
  - 40 : "40  ReactiveSwift                       0x0000000105d4fb9c $sIeg_IeyB_TR + 28"
  - 41 : "41  libdispatch.dylib                   0x0000000107663824 _dispatch_call_block_and_release + 24"
  - 42 : "42  libdispatch.dylib                   0x0000000107664dc8 _dispatch_client_callout + 16"
  - 43 : "43  libdispatch.dylib                   0x0000000107672a78 _dispatch_main_queue_callback_4CF + 1360"
  - 44 : "44  CoreFoundation                      0x000000019117dce4 <redacted> + 12"
  - 45 : "45  CoreFoundation                      0x0000000191178bac <redacted> + 1964"
  - 46 : "46  CoreFoundation                      0x00000001911780e0 CFRunLoopRunSpecific + 436"
  - 47 : "47  GraphicsServices                    0x00000001933f1584 GSEventRunModal + 100"
  - 48 : "48  UIKitCore                           0x00000001be38cc00 UIApplicationMain + 212"
  - 49 : "49  MyApp                               0x0000000104eaea3c main + 388"
  - 50 : "50  libdyld.dylib                       0x0000000190c36bb4 <redacted> + 4"

Xcode 11.5 / ReactiveSwift "6.3.0"

marosoaie

comment created time in 14 days

startedReactiveCocoa/ReactiveCocoa

started time in 14 days

startedReactiveCocoa/ReactiveCocoa

started time in 14 days

startedReactiveCocoa/ReactiveCocoa

started time in 14 days

startedReactiveCocoa/ReactiveCocoa

started time in 15 days

startedReactiveCocoa/ReactiveObjC

started time in 15 days

startedReactiveCocoa/ReactiveCocoa

started time in 15 days

startedReactiveCocoa/ReactiveCocoa

started time in 16 days

startedReactiveCocoa/ReactiveObjC

started time in 17 days

startedReactiveCocoa/ReactiveObjC

started time in 18 days

startedReactiveCocoa/ReactiveSwift

started time in 18 days

startedReactiveCocoa/ReactiveCocoa

started time in 18 days

startedReactiveCocoa/ReactiveObjC

started time in 18 days

startedReactiveCocoa/ReactiveObjC

started time in 18 days

PR opened ReactiveCocoa/ReactiveSwift

replaced allEvents by allCases

Replaced manually enumerated allEvents to allCases from CaseIterable.

Checklist

  • [ ] Updated CHANGELOG.md.
+4 -12

0 comment

1 changed file

pr created time in 18 days

fork vovabndr/ReactiveSwift

Streams of values over time

fork in 18 days

startedReactiveCocoa/ReactiveObjC

started time in 18 days

startedReactiveCocoa/ReactiveObjC

started time in 18 days

startedReactiveCocoa/ReactiveCocoa

started time in 19 days

startedReactiveCocoa/ReactiveObjC

started time in 19 days

startedReactiveCocoa/ReactiveCocoa

started time in 19 days

startedReactiveCocoa/ReactiveCocoa

started time in 19 days

pull request commentReactiveCocoa/ReactiveCocoa

Bump SPM swift-tools-version to 5.2

MapKit tests sometimes fail because MapKit intermittently retains the views a little longer.

mluisbrown

comment created time in 19 days

pull request commentReactiveCocoa/ReactiveCocoa

Bump SPM swift-tools-version to 5.2

This test is failing on macCatalyst:

it("should accept changes from bindings to its zoom enabled state")

No idea why 🤷

mluisbrown

comment created time in 19 days

pull request commentReactiveCocoa/ReactiveCocoa

Bump SPM swift-tools-version to 5.2

@andersio Done 👍

mluisbrown

comment created time in 19 days

pull request commentReactiveCocoa/ReactiveCocoa

Bump SPM swift-tools-version to 5.2

Could you update .swift-version too?

mluisbrown

comment created time in 19 days

PR closed ReactiveCocoa/ReactiveCocoa

Move Swift tools version to 5.2. ci:verify

Checklist

  • [ ] Updated CHANGELOG.md.
+3 -3

0 comment

2 changed files

andersio

pr closed time in 19 days

startedReactiveCocoa/ReactiveSwift

started time in 19 days

startedReactiveCocoa/ReactiveCocoa

started time in 19 days

startedReactiveCocoa/ReactiveObjC

started time in 19 days

PR opened ReactiveCocoa/ReactiveCocoa

Bump SPM swift-tools-version to 5.2

For the same reason as this was done in ReactiveSwift, which is so that test dependencies aren't exposed to clients of this package.

+1 -1

0 comment

1 changed file

pr created time in 19 days

startedReactiveCocoa/ReactiveObjC

started time in 19 days

startedReactiveCocoa/ReactiveCocoa

started time in 19 days

startedReactiveCocoa/ReactiveObjC

started time in 19 days

startedReactiveCocoa/ReactiveCocoa

started time in 20 days

startedReactiveCocoa/ReactiveCocoa

started time in 20 days

issue commentReactiveCocoa/ReactiveCocoa

Build error when using ReactiveCocoa via Swift Package Manager

Ok, after following some links mentioned here I tried adding:

-Xcc -fmodule-map-file=$(PROJECT_TEMP_ROOT)/GeneratedModuleMaps/iphonesimulator/ReactiveCocoaObjC.modulemap

To OTHER_SWIFT_FLAGS in the app target build settings, and this fixed it. This works without needing to add ReactiveCocoaObjC as a product in Package.swift.

It's a workaround, but looks like this is an Xcode bug 😢

mluisbrown

comment created time in 20 days

issue commentReactiveCocoa/ReactiveCocoa

Crash during runloop's autorelease pool drain on macOS 10.15 Catalina

Thanks for digging into this @andersio. I use trigger(for:) and signal(for:) a lot and concerned whether this solution is swapping one issue for another?

Having that said, this might reemerge with method wiretapping with trigger(for:) and signal(for:), unfortunately. Changing them not to do isa-swizzling would require a RAC major release with a precaution notice, because we can no longer guarantee that the method invocation callout happens after the actuall call (including the recursive super calls), hence potentially leading to unintended behavioral change. :(

If that happens, would it be because of some other code potentially swizzled the "already directly swizzled NSControl", i.e., it's my responsibility that nothing messes with it, or can there be other situations that lead to problems?

ianbytchek

comment created time in 20 days

issue openedReactiveCocoa/ReactiveCocoa

Build error when using ReactiveCocoa via Swift Package Manager

If I add ReactiveCocoa as a dependency using Swift Package Manager, when I import ReactiveCocoa I get the error: Missing required module 'ReactiveCocoaObjC'

I tried adding ReactiveCocoaObjC as a product in Package.swift in a fork of the repo, and then adding ReactiveCocoaObjC as a dependency in Xcode, in addition to ReactiveCocoa, but that didn't seem to make any difference.

I suspect that this is either an Xcode or SPM bug, but I'd love to know if anyone has a workaround.

created time in 20 days

fork mluisbrown/ReactiveCocoa

Cocoa framework and Obj-C dynamism bindings for ReactiveSwift.

fork in 20 days

fork landesi/ReactiveCocoa

Cocoa framework and Obj-C dynamism bindings for ReactiveSwift.

fork in 20 days

issue closedReactiveCocoa/ReactiveCocoa

Use GitHub Actions for CI

It would make the CI jobs faster with the much higher usage limits than Travis: https://help.github.com/en/articles/workflow-syntax-for-github-actions#usage-limits

  • You can execute up to 20 workflows concurrently per repository.
  • ...
  • You can run up to 20 jobs concurrently per repository across all workflows.

@ReactiveCocoa/reactivecocoa Could someone with the admin right sign up for the beta?

https://github.com/features/actions

closed time in 20 days

ikesyo

issue commentReactiveCocoa/ReactiveCocoa

Use GitHub Actions for CI

Moved to GitHub Actions in #3706.

ikesyo

comment created time in 20 days

issue closedReactiveCocoa/ReactiveCocoa

App rejected for HealthKit metadata

Hi, form a couple of months we have upgraded our version of ReactiveCoca and Apple had started to reject our application, because they find HealthKit inside it. The only occurrency of HealthKit in our entire project is in WKInterfaceActivityRing.swift. We use ReactiveCocoa in our watchOS extension, but we don't have HealthKit functionalities. Do you have some suggestion to solve our problem? Is it possible to drop this extension? Maybe our carthage file is misconfigured and we need to change something to import only watchkit extensions without the ones who import HealthKit?

closed time in 20 days

Oni-zerone

issue commentReactiveCocoa/ReactiveCocoa

App rejected for HealthKit metadata

11.0 has been released.

andersha@Mac ~ % otool -L /Users/andersha/Library/Developer/Xcode/DerivedData/ReactiveCocoa-dvxioopgbbdbrcazzetzfbdxwanb/Build/Products/Debug-watchsimulator/ReactiveCocoa.framework/ReactiveCocoa
/Users/andersha/Library/Developer/Xcode/DerivedData/ReactiveCocoa-dvxioopgbbdbrcazzetzfbdxwanb/Build/Products/Debug-watchsimulator/ReactiveCocoa.framework/ReactiveCocoa:
	@rpath/ReactiveCocoa.framework/ReactiveCocoa (compatibility version 1.0.0, current version 1.0.0)
	@rpath/ReactiveSwift.framework/ReactiveSwift (compatibility version 1.0.0, current version 1.0.0)
	/System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1675.129.0)
	/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
	/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 1675.129.0)
	/System/Library/Frameworks/WatchKit.framework/WatchKit (compatibility version 1.0.0, current version 1.0.0)
	@rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 1103.2.25)
	@rpath/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 0.0.0)
	@rpath/libswiftFoundation.dylib (compatibility version 1.0.0, current version 0.0.0)
	@rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 0.0.0)
Oni-zerone

comment created time in 20 days

release ReactiveCocoa/ReactiveCocoa

11.0.0

released time in 20 days

PR opened ReactiveCocoa/ReactiveCocoa

Move Swift tools version to 5.2. ci:verify

Checklist

  • [ ] Updated CHANGELOG.md.
+3 -3

0 comment

2 changed files

pr created time in 20 days

more