Batch deletes are fast and efficient for deleting Core Data entities when using an SQLite persistent store. They provide far better performance than deleting specific NSManagedObjects because batch delete operations are performed in the persistent store (at SQL level). Since the changes are reflected in the persistent store, they are not reflected on objects that are currently in memory.
When I started looking into FRP (Functional Reactive Programming) on iOS, ReactiveCocoa was pretty much the only way to go. Today there are quite a few FRP frameworks available, with ReactiveCocoa and RxSwift as the two most popular. ReactiveCocoa has been out there for a while and at the moment it is obviously more popular, but RxSwift is catching up fast. Both frameworks are extremely powerful and you can’t go wrong with either, but my vote goes to RxSwift for a few reasons.
iOS Universal Links are a great way of handling your regular website URLs directly in your application without a need to open it in Safari. The users get a seamless experience of navigating straight to the content in the app. If the application is not installed, the system will fallback to opening the URL in Safari. Custom URL Schemes have been used for communication between the apps, but the problem is that other applications can claim the same URL scheme. Universal links solve that problem.
If Xcode cannot symbolicate the crash report automatically, you can use “Symbolicatecrash” tool to symbolicate the report manually. There are three files you’re going to need for this to succeed. The .app file (or if you have an ipa file just rename it to zip and uncompress, you’ll find the app file in that package), the .dSYM file and the .crash report.
Prior to iOS 7.1 the UIApplication’s beginReceivingRemoteControlEvents method needed to be called and remoteControlReceivedWithEvent implemented where you’d handle remote control events by the event type that is received. In iOS 7.1 MPRemoteCommandCenter is introduced. With command center it is much more convenient to handle the remote control events.
LGStackView is a control that is a simplified version of UIStackView supporting iOS8. It is used to stack dynamic subviews constrained with autolayout constraints in Interface Builder based on their hidden or alpha property. Once the constraints are set up for all views, there are two IBInspectable properties in Interface Builder to set up. First is the orientation (vertical/horizontal), and the seconds is padding among views. The order of the views is determined by their z index, which is set by reordering subviews list in Interface Builder.
iOS Drag & Drop example is written in Objective-C and Swift 2.0. The idea is to perform an action once the circle is dragged and dropped into the goal area. If the circle is not dropped on the goal it’s returned to the starting position with animation. Pan gestures are accepted over the entire view, but the circle is constrained to the dragging area subview.
LGHorizontalLinearFlowLayout – UICollectionView flow layout subclass written in Objective-C and Swift 2.0 that supports custom page width and zoom/scale of center page/cell. Scale offset and minimum scale factor parameters can be used to fine tune the effect.
For years I’ve been working with many different teams using various workflows and version control systems. There is a great overview of different workflows (Centralized Workflow, Feature Branch Workflow, Gitflow Workflow and Forking Workflow) on Atlassian website. My experience is that Centralized Workflow is mostly used by very small teams working on small projects. The projects are usually developed using the Waterfall model. The independent requirements of the project are divided among developers and they are followed through the development stage. Developers use some of the core application layers (e.g. data layer), but other than that, most of the code a developer writes is not seen by other developers. The process is very simplified and there is not much overhead cost as in other workflow models, but it can have flaws in lower software quality due to the lack of code review.
UIStackView is introduced in iOS 9 and is very useful for laying out dynamic collection of views in horizontal or vertical axis. Whenever one of it’s managed view’s hidden property changes, the layout is updated to show/hide the managed views. To checkout more about UIStackView see the Apple Class Reference. There is also a great tutorial about UIStackView at tuts+.
It would be very nice to have a control like UIStackView that is available for iOS7 and above. I needed a way to create a dynamic collection of views so I found an interesting port of UIStackView – OAStackView.
Check it out: https://github.com/oarrabi/OAStackView
If you liked this blog post I’d appreciate if you followed me on Twitter