This is a curated list.
Xcode keyboard shortcuts
- Xcode shortcut Cheatsheet pdf
- Pluralsight, Becoming an Xcode power user by @fattywaffles
Xcode storyboards
Language cheat sheets
closure syntax (Swift) -- inspired by block syntax (Obj-C), see also: function pointer syntax (C)
Communities / Blogs / News
- Apple (the official swift reference book, swift.org)
- nshipster
- hackingwithsift
- objc.io (Advanced swift, functional swift, swiftUI books, videos)
- swiftbysundell
- Ray Wenderlich
- Mike Ash's blog
- swiftrocks
- Donny wals
- SwiftLee
- ios dev weekly e-mail newsletter
- WWDC 2019 viewing guide
- Some great, detailed write-ups here
- Max Chuquimia
- Swift Rocks
Podcasts
- Core Intuition
- TBD
swift <-> objc interop
Xcode build speed
Composability of View Controllers
- View Controller Container Examples also alternative to presentors for managing a flow. see also this and this and official docs and [DTOverlayController] (https://github.com/tungvoduc/DTOverlayController) and dated but interesting
- Overlay style like how PencilKit does it...
- Definitive guide to passing data across vc's segues, etc. -- interesting moving casting and data passing out to an extension of UIStoryboardSegue
Testing
- UITests cheat sheet
- Structuring UI Tests insight
- Handling system alerts during UI Tests
- Scrolling a scroll view from a UITest
- Bitrise's guide to unit/ui tests
- Bitrise's UI/Unit testing overview
- Apple's wwdc 2019 video on unit/ui tests
- q/realtalk: Are mocking libraries even useful anymore for swift, considering protocol extensions and careful structuring of code makes it easier to swap in temporary stub/mocks via protocols?
Debugging
- Developer tools for UI debugging
- Concise explanation of allocation, retain/release tracking with Instruments on stack overflow
Setting and holding a baseline
- 3 ways/levels to silence build warings
- SwiftFormat by Nick Lockwood -- my choice, see nshipster article for breakout of other options
AutoLayout
- The Auto Layout book
- Autolayout pluralsight videos: Fundamentals and Adaptive UI's
- UILayoutGuide guide
- spacer views between other views for centering betweenthing pre-UILayoutGuide
runloops
- Dive into the runloop
- UIkit rendering part 1 2 3 - runloop
- Run runloop run
bitcode
Tools from outside Apple >XC11.4, iOS13
- Quicklook ipa/xarchives
- swiftpm? cocoapods? carthage? mint?
- xc just locked down xc plugin ecosystem, so no more alcatraz
- fastlane
- bitrise
Other curated lists
misc
- Asset catalogs: Custom bundles and asset catalogs and here
- Asynchronous coordination
- Swift Algorithms
unknowns
- current state of VIPER/MVVM/etc
- https://clean-swift.com -- is this real or wat? reaction to MVVM, Viper, etc. see also Lotus MVC
- Quicklook car/assetcatalog
deeper debugging, tolook:
- Dancing with the debugger and then follow up with facebook/chisel: Chisel is a collection of LLDB commands to assist debugging iOS apps. –
- Custom LLDB Commands in Practice | raywenderlich.com –
- Advanced Apple Debugging & Reverse | raywenderlich.com Store –
- DerekSelander/LLDB: A collection of LLDB aliases/regexes and Python scripts to aid in your debugging sessions –
- Swift helpers, and the lldb setup to use them. Presented @ SLUG https://speakerdeck.com/kastiglione/advanced-debugging-and-swift –
- Leveraging Swift in Xcode’s LLDB - ITNEXT –
- Dave DeLong on Twitter: "@bwebster Add this to your ~/.lldbinit: command regex objc 's/^(.+)$/expr -O -l objc++ -- %1/' Now you can do: (lldb) objc [0x600003b132c0 description]" / Twitter –
- How to Extend LLDB to Provide a Better Debugging Experience | Inside PSPDFKit –
- Auto Layout Debugging In Swift - iOS App Development - Medium –
- Sample .lldbinit –
- Stackpoint! Breakpoint call stacks 🥞 - Michael Zuccarino - Medium –
- Auto Layout Guide: Ambiguous Layouts – see debug invocable methods
- lldb with swift dive
- Use your loaf
- ivaev
- diagnosing memory, thread, and crashes early - Apple
- Identifying UIKit runtime version
Swift elegance
Xcode / iOS / resolutions and versions
Playgrounds
Architecture of medium to large complexity apps
Misc unfiltered
Core Bluetooth Research
- Core Bluetooth basic -- punchthrough
- Improving an SDK with CoreBlutooth -- Error Handling
- Interesting libraries Little Bluetooth -- Combine, Bluejay -- Callback based, RxBluetooth
- Pairing flow w/RxSwift
- Using RX vs Delegates with CoreBluetooth
- Intro to BLE iOS
General BLE:
- https://blog.attify.com/the-practical-guide-to-hacking-bluetooth-low-energy/, https://www.bluetooth.com/specifications/assigned-numbers/, ble connection intervals
- BLE intro
troubleshooting disconnected:
https://stackoverflow.com/questions/52967920/connect-to-bluetooth-cbperipheral-after-app-restart, https://stackoverflow.com/questions/23338767/ios-core-bluetooth-getting-api-misuse-warning, https://stackoverflow.com/questions/65370708/corebluetooth-can-only-accept-commands-while-in-the-connected-state
troubleshooting sleep/mac/powernap/wake on bluetooth
https://apple.stackexchange.com/questions/375462/deeper-sleep-on-macbook-so-it-will-stop-connecting-to-bluetooth-and-draining-bat
3 Things to Know about iOS CoreBluetooth
android - Bluetooth Low Energy Device Simulator/Emulator
Central Disconnecting Inactive
Ditto | Getting Started with Core Bluetooth
ios - How can I reconnect to device after disconnecting in Core Bluetooth
Scan/Discover — bleak 0.13.0 documentation
BLE Flutter stuff
dotintent/FlutterBleLib: Bluetooth Low Energy library for Flutter with support for simulating peripherals
Polidea/blemulator_flutter: BLEmulator Flutter: the Flutter BLE peripheral simulator
Threading
Combine:
Core Data
Swift Package indexs:
Homekit
SwiftUI
Mapping floating point numbers between two ranges in Swift
SwiftUI Cheat sheets/quick ref
SwiftUI - Cheat Sheet
View Modifiers Apple Developer Documentation
SimpleBoilerplates/SwiftUI-Cheat-Sheet: SwiftUI 2.0 Cheat Sheet
SwiftUI Custom components
SwiftUI special effects w/blurs/blending
Neon Glow View Modifier with Animation SwiftUI
SwiftUI Custom component - slider
How to trigger a function when a Slider changes in SwiftUI
swift - How can I trigger an action when a swiftUI toggle() is toggled?
A subclass of UISlider which has a tool tip indicating the current value of the slider
How to create a custom SwiftUI Slider
How to make a custom slider in SwiftUI
SwiftUI <-> UIKit stuff
SwiftUI-Introspect - Introspect underlying UIKit components from SwiftUI
How to adjust the position of a view using its offset
SwiftUI Testing
ViewInspector
SwiftUI Animations
Basics
Animatable and AnimatableModifier
Animations in SwiftUI
[Advanced SwiftUI Animations(https://swiftui-lab.com/swiftui-animations-part1/)
SwiftUI Gestures in more depth
Drag Gesture
SwiftUI docs w/examples
swiftontap SwiftUI docs
SwiftUI internals/how it works
SwiftUI Render loop
SwiftUI diffing alg
Avoid escaping closures
Variadic views
Optimizing build times
Reducing iOS build times with interface targets
XCLogParser can provide an overview of build performance characteristics
Scaling iOS Codebase -- video
'''
Build performance section
-Xfrontend -warn-long-function-bodies=100
-Xfrontend -warn-long-expression-type-checking=100
Private/fileprivate/final wherever possible
Interface dependencies
Avoid defining many types in the same file
Build active architecture only
Use DWARF, not dSYMs in debug
Enable whole module optimization
Delete unused code
Remove dependencies
$ defaults write com.apple.dt.Xcode ShowBuildOperationDuration -bool YES
Move dependencies to pre-compiled versions
Modularize better, cache modules
With interface target centric approach, more can be statically linked improving app launch time.
'''
(xcdiff for comparing Xcode projects)[https://github.com/bloomberg/xcdiff]
(xcconfig ultimate guied)[https://pewpewthespells.com/blog/xcconfig_guide.html]
(Xcodegen yml based project file generator)[https://github.com/yonaskolb/XcodeGen]
(Tuist swift based project file generator)
[https://docs.tuist.io]
(awesome tuist)
[https://github.com/tuist/awesome-tuist]
https://medium.com/vptech/solving-modularised-ios-project-challenges-by-adopting-project-generation-eda9cd1ee3bd
https://developers.soundcloud.com/blog/tuist-project-generation
https://ronanociosoig.medium.com/unifying-tuist-projects-80abc226d756
https://github.com/lm2s/Texther
https://medium.com/swlh/first-touches-of-using-tuist-for-xcode-project-generation-f46c630bc29b