Distributing and Consuming Dependencies

One of the benefits of a healthy platform is the availability of high quality open source projects that compliment it. However, without an official method of distribution, the community was left to solve this problem. Two major methods emerged: CocoaPods & Carthage. CocoaPods CocoaPods is a Ruby gem that allows you to create a CocoaPod. Each pod defines integratable targets via source files and/or binary files, resources, and other dependencies in a YAML based podspec....

Thoughts on WWDC 2019

Oh boy, this year sure was chock full of stuff. At WWDC, Apple revealed their plans for a unified development platform, elevated their newer platforms to first class status, and revealed some long overdue hardware. Putting all of that together, there was a lot to unpack and even more to learn with the announcement of SwiftUI, Catalyst, Combine, and a slew of other new frameworks (most being Swift only). tvOS tvOS isn’t useless anymore with the announcement that tvOS 13 will add support for Xbox One and PS4 game controllers....

WWDC 2019 Wish List

It’s that time of year again where Apple developers make the migration to San Jose to find out what changes are coming to the Apple platforms this fall. This year is supposed to be one of the biggest years for Apple due to large architectural projects coming to fruition with the Marzipan SDK releasing to developers (and maybe a hint of ARM based Macs). Additionally, it is looking very likely that iTunes is going away in favor of separate applications....

Pass the Remote

If you have a single application, typically you only need to get data from your server. However, if you have multiple applications that interact with one another, you need to be able to communicate between them. In terms of communicating data, Apple has you covered in quite a few ways: NSUserDefaults, App Groups, & Keychain Sharing. NSUserDefaults NSUserDefaults is a great place to store small bits of information like preferences. This allows you to have a consistent user experience across all of your applications on the device....

Controlling Test Executions

When running unit tests (and UI tests), XCTest provides a few ways of interacting with the test runner. The most common scenario for interacting with your own tests is to provide common code to run before tests start and when they finish to ensure that each test has a clean environment. Setup and Tear Down XCTestCase provides APIs to modify the test environment before and after all tests have executed, but also before and after individual tests have run....