What's the cost of not prioritizing mobile release management?Join mobile leaders from Skyscanner and SoFi on May 22 to find out just how much your outdated mobile release processes are actually costing you—and learn the ROI of updating how you work and ship. Register for the live discussion.
Swift
Blog posts related to Swift specific topics.
- Swift 6.2: A first look at how it’s changing Concurrency
- Swift Reduce: Combining elements into a single value
- Swift Concurrency Course: Modern Concurrency & Swift 6
- What is Structured Concurrency?
- iOS App Development: How to get started?
- Swift Tutorials: Learn Swift with Easy-to-Follow Code Examples
- SF Symbol: How to for Swift & SwiftUI
- Enum explained in-depth with code examples in Swift
- MainActor usage in Swift explained to dispatch to the main thread
- Security-scoped bookmarks for URL access
- JSON Parsing in Swift explained with code examples
- Typed throws in Swift explained with code examples
- Async await in Swift explained with code examples
- Swift Package Manager framework creation in Xcode
- ChatGPT for Swift: Top 5 code generation prompts
- Repository design pattern in Swift explained using code examples
- Optionals in Swift explained: 5 things you should know
- Extensions in Swift: How and when to use them
- Swift Evolution: Reading and learning from proposals
- User Defaults reading and writing in Swift
- Thread dispatching and Actors: understanding execution
- Value and Type parameter packs in Swift explained with examples
- App Intent driven development in Swift and SwiftUI
- If and switch expressions in Swift
- Predicate Macro in Swift for filtering and searching
- SwiftSyntax: Parse and Generate Swift source code
- @backDeployed to extend function availability to older OS releases
- Swift Macros: Extend Swift with New Kinds of Expressions
- Share Swift Code between Swift On Server Vapor and Client App
- Ranges in Swift explained with code examples
- Optimizing your app for Network Reachability
- The operation couldn’t be completed: solving errors in Swift
- Equatable conformance in Swift explained with code examples
- Detached Tasks in Swift explained with code examples
- Task Groups in Swift explained with code examples
- OptionSet in Swift explained with code examples
- @dynamicCallable in Swift explained with code examples
- Binary Targets in Swift Package Manager
- Result builders in Swift explained with code examples
- Getting started with Unit Tests in Swift
- Announcing the SwiftLee Talent Collective
- Alternate App Icon Configuration in Xcode
- Never keyword in Swift: return type explained with code examples
- Deadlocks in Swift explained: detecting and solving
- Shared with You implementation and testing explained
- Sendable and @Sendable closures explained with code examples
- URLSessionConfiguration: Exploring opt-in configurations
- App Store Connect API SDK in Swift: Creating Developer Tools
- Generics in Swift explained with code examples
- Existential any in Swift explained with code examples
- Some keyword in Swift: Opaque types explained with code examples
- Increase App Ratings by using SKStoreReviewController
- Memory leaks prevention using an autoreleasepool in unit tests
- AsyncSequence explained with Code Examples
- AsyncThrowingStream and AsyncStream explained with code examples
- Using MetricKit to monitor user data like launch times
- AnyObject, Any, and any: When to use which?
- How to use the #available attribute in Swift
- Self-documenting code in Swift to increase readability
- Tasks in Swift explained with code examples
- Guard statements in Swift explained with code examples
- Reflection in Swift: How Mirror works
- Creating an App Update Notifier using Combine and async/await
- Composition vs. Inheritance: code architecture solutions explained in Swift
- Property Wrappers in Swift explained with code examples
- Nonisolated and isolated keywords: Understanding Actor isolation
- EXC_BAD_ACCESS crash error: Understanding and solving it
- Race condition vs. Data Race: the differences explained
- Thread Sanitizer explained: Data Races in Swift
- @AppStorage explained and replicated for a better alternative
- How to use throwing properties to catch failures in Swift
- Unwrap or throw: Exploring solutions in Swift
- Async let explained: call async functions in parallel
- Dependency Injection in Swift using latest Swift features
- Actors in Swift: how to use and prevent data races
- Improve discoverability using Static Member Lookup in Generic Contexts
- Presenting sheets with UIKit using a UISheetPresentationController
- Swift Jobs: How to make the right career move
- Fileprivate vs private in Swift: The differences explained
- URLSession: Common pitfalls with background download & upload tasks
- NSPredicate based XCTestExpectations for conditional checks
- Getting started with the Combine framework in Swift
- How to test optionals in Swift with XCTest
- How to use the rethrows keyword in Swift
- How to use @autoclosure in Swift to improve performance
- How and when to use Lazy Collections in Swift
- How to use Variadic parameters in Swift
- XCTExpectFailure: Expected test failures explained with code examples
- Lazy var in Swift explained with code examples
- Closures in Swift explained with Code Examples
- What is a Computed Property in Swift?
- SwiftLee 2020 In Review: Most read blog posts
- Getting started with associated types in Swift Protocols
- Result in Swift: Getting started with Code Examples
- Constraints in Core Data Entities explained
- NSManagedObject events: handling state in Core Data
- Try Catch Throw: Error Handling in Swift with Code Examples
- How-to use Diffable Data Sources with Core Data
- Diffable Data Sources Adoption with Ease
- Persistent History Tracking in Core Data
- Write-Ahead Logging (WAL) disabled to force commits in Core Data
- Adding a closure as a target to UIButton and other controls in Swift
- ValueTransformer in Core Data explained: Storing absolute URLs
- @discardableResult in Swift explained: Ignoring return values
- Core Data Performance: 6 tips you should know
- Expressible literals in Swift explained by 3 useful examples
- String Interpolation in Swift explained using 4 useful cases
- Using Custom debug descriptions to improve debugging
- URLs in Swift: Common scenarios explained in-depth
- Custom Operators in Swift with practical code examples
- Custom subscripts in Swift explained with code examples
- NSFetchedResultsController extension to observe relationship changes
- Testing private methods and variables in Swift
- How to mock Alamofire and URLSession requests in Swift
- Creating a command line tool using the Swift Package Manager
- Authentication with signed requests in Alamofire 5
- Unique values in Swift: Removing duplicates from an array
- SwiftLee 2019 in review: Top Swift Development blog posts
- Advanced asynchronous operations by making use of generics
- Asynchronous operations for writing concurrent solutions in Swift
- Getting started with Operations and OperationQueues in Swift
- Concurrent vs Serial DispatchQueue: Concurrency in Swift explained
- Dark Mode: Adding support to your app in Swift
- Core Data and App extensions: Sharing a single database
- Auto Layout in Swift: Writing constraints programmatically
- Rich notifications on iOS explained in Swift
- Struct vs classes in Swift: The differences explained
- Error handling in Combine explained with code examples
- Array vs Set: Fundamentals in Swift explained
- Xcode refactoring options explained with examples
- UIKeyCommand how-to add keyboard shortcuts & speed up your workflow
- Combine debugging using operators in Swift
- Creating a custom Combine Publisher to extend UIKit
- Dynamic Member Lookup combined with key paths in Swift
- Using NSBatchDeleteRequest to delete batches in Core Data
- Weak self and unowned self explained in Swift
- Typealias usage in Swift
- @unknown default usage with enums in Swift
- Swift 5.0: How to migrate your project and frameworks
- Blog about Swift: Tips and ideas to start your own
- Required keyword usage in Swift classes and structs
- Alamofire vs URLSession: a comparison for networking in Swift
- How to use for loop, for each, while, and repeat in Swift (in-depth)
- QR Code generation with a custom logo and color using Swift
- SwiftLee 2018 in review: Top Swift Development blog posts
- Implementing Siri support using NSUserActivity, intents and shortcuts
- Measure the performance of code in Swift
- Performance, functional programming and collections in Swift
- SwiftLint valuable opt-in rules to improve your code
- Updating to Swift 4.2
- Defer usage in Swift
- CompactMap vs flatMap: The differences explained
- Compiler Diagnostic Directives using a hashtag in Swift
- Where usage in Swift
- Typed notifications using custom extensions
- Printing data requests using a custom URLProtocol
- Controlling Progress children by adding remove
- Share Extension UI Tests written in Swift
- Updating to Swift 4.1
- Optional protocol methods in Swift
- The start of a new blog
Debugging
Enhance your debugging skills and learn how to improve your debugging workflow.
- Network Link Conditioner: Simulating Slow Networking
- Memory consumption when loading UIImage from disk
- Debugging SwiftUI views: what caused that change?
- OSLog and Unified logging as recommended by Apple
- Network Extension Debugging on macOS
- Deadlocks in Swift explained: detecting and solving
- Flaky tests resolving using Test Repetitions in Xcode
- Using Custom debug descriptions to improve debugging
- No space left on device: Testing low storage scenarios
- 5 Xcode breakpoints tips you might not yet know
- Xcode Instruments usage to improve app performance
- Combine debugging using operators in Swift
- Compiler Diagnostic Directives using a hashtag in Swift
- Debugging breakpoints as a replacement for prints
- Core Data Debugging in Xcode using launch arguments
Optimization
Anything related to optimization of your app.
- Network Link Conditioner: Simulating Slow Networking
- Contingent pricing for in-app subscriptions
- App onboarding funnel optimization to increase conversions
- App design: 5 benefits of using system components
- ChatGPT for Swift: Top 5 code generation prompts
- The power of consistency in side projects
- Swift Newsletters: How to stay up to date as an app developer
- Using campaign links to track impressions, downloads, and sales
- Promotional offers: Increase App Revenue using discounts
- Build performance analysis for speeding up Xcode builds
- 10 Tips to Get Your App Featured on the App Store
- Xcode Simulator Directories Exploration
- Engineering goals: How to become a more successful developer
- Binary Targets in Swift Package Manager
- Refactoring Swift: Best Practices to succeed
- Side Projects: 10 Tips for being successful
- App Icon Generator is no longer needed with Xcode 14
- Increase App Ratings by using SKStoreReviewController
- Writing Swift Articles: Tips to become a better writer
- Non-fatal errors vs fatal crashes: The differences explained
- Increasing development effectiveness by recognizing repetition
- Presentation tips for performing professional Swift talks
- App Launch Time: 7 tips to increase performance
- WWDC 2020: 7 Tips to prepare yourself
- 4 Tips to make it easier to fix crashes and bugs
- Unused images and resources clean up in Xcode
- Developer productivity boost with Google Search Tips & Tricks
- Speeding up development: a collection of tips
- Danger plugins to speed up code reviews
- Speeding up with Xcode Behaviors
- Measure the performance of code in Swift
- Performance, functional programming and collections in Swift
- SwiftLint valuable opt-in rules to improve your code
- Effective development by improving the daily routine as a developer
- App Store Optimization for your App Store Page
- How to get iOS reviews with 4+ stars for your app
Workflow
All related to optimizing your workflow as a developer.
- Designing Apps: 5 Methods to improve your workflow
- Test-Driven Development (TDD) for bug fixes in Swift
- Third-party libraries acknowledgments using a Settings bundle
- App Preview Videos Capturing using the Xcode simulator
- Status bar overrides in the iOS Simulator
- Picking your minimum iOS version to support
- OSLog and Unified logging as recommended by Apple
- Location Simulation in Xcode’s Simulator
- Testing push notifications on the iOS simulator
- Side Projects: 10 Tips for being successful
- Full-screen development with Xcode and the Simulator
- Introducing GitBuddy: Changelog and Release manager for GitHub
- 4 Tips to make it easier to fix crashes and bugs
- Mastering the assistant editor in Xcode 11
- Xcode refactoring options explained with examples
- UIKeyCommand how-to add keyboard shortcuts & speed up your workflow
- Speeding up development: a collection of tips
- Cheat sheet examples for Xcode and Swift development
- Shortcuts essentials in Xcode to speed up your workflow
- Effective development by improving the daily routine as a developer
- Using Xcode custom file templates with GIT
- Useful less known Xcode tips to improve your workflow
- Fixing crashes with Firebase Crashlytics
Xcode
Learn how to use Xcode more efficiently.
- RocketSim 13.0: Builds Apps Faster
- Inspect network traffic using the Xcode Simulator
- Xcode Build Insights: Keep track of project compilation times
- Solve Missing API declaration using required reason (ITMS-91053)
- Symbolicate crash logs with Xcode
- Build performance analysis for speeding up Xcode builds
- Xcode Debug Console Tour: Exploring All Options
- Localization testing in Xcode
- #Preview SwiftUI Views using Macros
- Xcode Bookmarks: Save code landmarks & organize tasks
- Running Xcode on top of iPad
- Xcode Simulator Directories Exploration
- Getting started with Unit Tests in Swift
- Faster StoreKit testing by syncing in-app purchase products
- App Icon Generator is no longer needed with Xcode 14
- Thread Sanitizer explained: Data Races in Swift
- Development Assets in Xcode to enrich SwiftUI Previews
- Xcode Mark Line to improve readability using // Mark: comments
- Overriding UserDefaults for improved productivity
- Launch screens in Xcode: All the options explained
- SVG Assets in Xcode for Single Scale Images
- SwiftUI Previews: Validating views in different states
- Dark Mode: Adding support to your app in Swift
- Mastering the assistant editor in Xcode 11
- 5 Xcode breakpoints tips you might not yet know
- Xcode Instruments usage to improve app performance
- Unused images and resources clean up in Xcode
- Using Xcode Previews with existing UIKit views without using SwiftUI
- Unused localized strings clean up from a Strings file
- Cheat sheet examples for Xcode and Swift development
- Speeding up with Xcode Behaviors
- Shortcuts essentials in Xcode to speed up your workflow
- Command-click on code options and possibilities in Xcode
- Using Xcode custom file templates with GIT
- Useful less known Xcode tips to improve your workflow
- Enabling newly added opt-in features in Xcode 10