The iOS SDK documentation states the following:
Since transactions block each other, it is best to avoid opening transactions on both the UI thread and a background thread. If you are using Sync, avoid opening transactions on the UI thread altogether, as Realm processes synchronizations on a background thread. If a background transaction blocks your UI thread’s transaction, your app may appear unresponsive.
So that is the stated policy and yet the o-fish iOS app written by Realm developers writes on the main thread. Why is that? I’ve found it cumbersome to update a managed object with values from the UI but then write on a background queue. I was hoping the o-fish app would show me the “right” way to do it.