gitmyhub

ios-good-practices

★ 11k updated 2y ago

Good ideas for iOS development, by Futurice developers.

A practical written guide to iOS app development best practices covering architecture, tooling, Swift style, security, and deployment, aimed at developers new to the Apple ecosystem.

SwiftObjective-CXcodeCocoaPodsCarthagesetup: easycomplexity 1/5

This repository is a written guide to good practices in iOS app development, maintained by developers at Futurice, a software consultancy. It is not a code library or tool but a living document meant to help developers, especially those new to iOS, make good decisions throughout a project.

The guide covers a wide range of topics organized into sections. Early sections address getting started: choosing between writing user interfaces in code versus using Apple's visual Interface Builder tool, setting up version control correctly, and managing third-party libraries through tools like CocoaPods or Carthage. Later sections address architecture decisions (how to structure the code of an app), data storage, image and asset handling, coding style conventions in Swift and Objective-C, security considerations, analytics, building, and deploying to the App Store.

Each section explains the trade-offs involved in common decisions rather than mandating a single approach. For example, the guide walks through the pros and cons of using Storyboards versus writing UI in code, and suggests a hybrid approach as a reasonable middle ground. The tone is practical and conversational, framing everything as suggestions rather than strict rules.

The document was written with the recognition that iOS can feel unfamiliar to developers coming from other platforms, since it uses its own terminology, its own programming languages (Swift and Objective-C), and a specific toolchain centered on Xcode. The guide aims to flatten that learning curve by collecting institutional knowledge in one place.

Contributions from the broader community are welcome, and the guide is openly licensed. The full README is longer than what was shown.

Where it fits