Skip to content
tezvyn:

All bites

The whole library, newest first. Filter by what you are here for, or pick a topic if you already know.

8668 bites

Page 72

iOS & Swift1 min read

XCFrameworks and Binary Distribution Trade-offs

XCFramework bundles slices for multiple platforms/architectures, used to hide source or speed builds.

iOS & Swift1 min read

Decoupled Cross-Module Navigation in Modular iOS

Depend on a shared abstraction, register concrete routers in a coordinator or registry, resolve at runtime.

iOS & Swift1 min read

Resolving Conflicting Transitive Versions in SPM

SPM allows only one version per package, so diagnose the graph, then update, pin, or fork to find an overlap.

iOS & Swift1 min read

Making a Legacy UIViewController Testable

Extract logic into a testable view model, inject dependencies, keep the controller a thin humble object.

iOS & Swift1 min read

setUp() and tearDown() in XCTestCase

SetUp builds fresh state before each test, tearDown cleans up after, ensuring independence.

iOS & Swift1 min read

Generating Video Thumbnails with AVAssetImageGenerator

Load AVAsset, configure AVAssetImageGenerator, request the time off the main thread, hop back to update UI.

iOS & Swift1 min read

Building a Card Flip Animation in SwiftUI

Drive a flipped state, rotate both faces with rotation3DEffect, hide the back face.

iOS & Swift1 min read

Push vs Modal Presentation in UIKit

Push adds to a nav stack with back, modal presents a self-contained interrupting flow.

iOS & Swift1 min read

IBOutlet vs IBAction in Interface Builder

Outlet references a view, action handles an event, both connect via Ctrl-drag.

iOS & Swift2 min read

Protocols with associated types and opaque types

A PAT leaves a placeholder type unresolved, so it has no single concrete shape and historically could not be used as a bare existential; opaque types with some let you return one fixed underlying conforming…

iOS & Swift1 min read

do-try-catch versus Optional return types

Throwing functions with do/try/catch convey why something failed via typed Error values; Optionals only say success or absence. Use throws when the caller needs the reason.

iOS & Swift2 min read

Closures and trailing closure syntax

Closures are self-contained function blocks that capture surrounding state; a final closure parameter can be passed as a trailing closure outside the parentheses.

iOS & Swift1 min read

Purpose of the guard statement

Guard requires its condition to hold or else exits the scope, and unwrapped optionals stay in scope afterward; this flattens nesting versus if.

iOS & Swift1 min read

Retain cycles and how to break them

A cycle is two objects (or a closure and its owner) holding mutual strong references so neither deallocates; break it with a [weak] or [unowned] capture list.

iOS & Swift1 min read

Decoding a heterogeneous JSON array by a type field

Peek the type field with a partial decode, switch on it, and decode the concrete type, wrapping each in an enum or boxed protocol value.

iOS & Swift1 min read

Minimizing Storyboard merge conflicts

Split into many small storyboards or xibs, or move to programmatic or SwiftUI layout; process-wise coordinate ownership and merge often.

iOS & Swift2 min read

Faulting in Core Data

A fault is a placeholder object whose property data is not yet loaded; accessing a property fires the fault and fetches from the store, saving memory.

iOS & Swift2 min read

View identity in SwiftUI and the .id() modifier

Identity links a view to its persistent state and transitions; structural identity comes from position, explicit identity from .id(); changing the id resets state and forces a new view.

iOS & Swift1 min read

Copy-on-write and implementing it for a custom struct

CoW shares a buffer until mutation, deep-copying only when the buffer is non-unique; Array, Dictionary, Set, String use it; implement with a class storage box and isKnownUniquelyReferenced.

iOS & Swift1 min read

map versus compactMap versus flatMap

Map transforms each element one-to-one; compactMap transforms then drops nils; flatMap transforms to sequences then concatenates.