Top-notch video tutorials for Swift developers

Thousands of developers use NSScreencast to stay on top of iOS development.

ExxonMobil
Venmo
Thoughtbot
The Working Group
Medium

Updated Regularly

Bite-sized videos on iOS development.

The iOS landscape is large and changes often. With short, bite-sized videos released on a steady schedule, NSScreencast helps keep you continually up to date.

Up to date with Xcode 15 and iOS 17

We cover the latest and greatest to get you up to speed quickly.

UIKit, SwiftUI, SwiftData, and macOS

In our catalog you'll find a wide variety of topics and UI frameworks.

Swift Language

Increase your knowledge of the Swift language and take advantage of new Swift language features as they are developed.

High Quality Videos

We stress the details. Each screencast is carefully produced in HD quality.

Short and Focused

We don't want to waste your time. Most videos are between 10 and 20 minutes long.

Any Device

Stream on the web or use our native apps for iOS or the tv.

Team Plans

Get NSScreencast for your whole team. Discounts start at 5 seats
Steven Tolton

Have I mentioned lately how awesome NSScreencast is? No? Worth the subscription. Check it out if you’re an iOS developer. Or even if you’re not and you want an example of how to do coding screencasts well.

Foster Bass

Got tired of dead-end googling so I checked to see if @NSScreencast had covered what I was looking for. Of course he had, 4 years ago. Should have checked there first.

Aijaz Ansari

One 13-minute episode of @NSScreencast just paid for the yearly subscription fee in amount of time saved. Do it.

Sam Soffes

Seriously great stuff even for seasoned developers. I’ve learned a good amount from Ben’s videos.

James Dempsey

You can really expand your development horizons in just a few minutes a week with NSScreencast.

Alexis Gallagher

Random PSA for iOS developers: @NSScreencast is a great resource, and worth every penny. It’s high quality, practical, and honest.

Nate Armstrong

Can’t say enough good things about @NSScreencast There is gold in the Road Trip DJ Series.

Karl Oscar Weber

I just reuppped my subscription to @NSScreencast. [An] indespensible resource if you’re into iOS or Mac Development.

Marcus Ziadé

Just finished @NSScreencast series on Modern CollectionViews. Strongly recommended. Programmatic UI, nicely structured code, easily approachable explanation style. 👌

Showing episodes 241 - 264 of 573 in total
  • Testing Asynchronous Code

    #333

    Testing iOS Applications

    In this episode we cover the concept of expectations, which enables us to test asynchronous code, properly timing out and failing a test if the expectation is never fulfilled.

  • Mocks and Stubs

    #332

    Testing iOS Applications

    In this episode we use mocks and stubs to setup collaborating objects to inspect the behaviors of tested objects.

  • Value Based Testing

    #331

    Testing iOS Applications

    In this episode we go over examples of value based testing used for easily testable systems.

  • Using XCTest in Playgrounds

    #330

    Testing iOS Applications

    Running your tests in Xcode Playgrounds can be a great way to get rapid feedback on your changes. It is a useful way of practicing testing and experimenting with APIs that you are not familiar with. In this episode we will see how to run the test suite and how to enhance the feedback we get by observing the test results as they are run.

  • Adding XCTest to Existing Projects

    #329

    Testing iOS Applications

    If you did not check the box "Include Unit Tests" when first creating your project (or perhaps you want to add a separate testing target), this screencast will show the steps of how to get it set up from scratch. It also covers how to set up a scheme dedicated to building your tests, and choosing which tests to run automatically.

  • Introduction to XCTest

    #328

    Testing iOS Applications

    XCTest is a test framework built into Xcode. In this episode we'll see the mechanics of how this works, how your test bundle sits alongside your app in Xcode. We'll look at the structure of test cases, and the assertions we will use to verify behavior of our code.

  • Intro

    #327

    Testing iOS Applications

    Introduction to the Testing iOS Applications series

  • Swift 4 Key Paths

    #326

    Swift 4 key paths allow us to refer to properties of Swift types in a dynamic way, enabling us to program against them without knowing the exact property in question. In this episode we will see how they are created, how they are used, and see examples of them in action with Key-Value Observing and Autolayout.

  • Setting up Xcode

    #325

    Setting up a New Mac for Development

    In this episode we setup our Xcode preferences and themes.

  • Setting Up a Ruby Development Environment

    #324

    Setting up a New Mac for Development

    In this episode we install homebrew, a popular package manager. We use it to install Macvim and ruby. We also setup Postgres with Postgresapp.

  • Setting Up Git and SSH

    #323

    Setting up a New Mac for Development

    In this episode we configure git to identify our commits, set up a diffing & merging tool, and configure SSH so we can log into other machines securely.

  • Setting Up iTerm Keyboard Behavior

    #322

    Setting up a New Mac for Development

    In this episode we configure iTerm’s keyboard behavior to match macOS to allow for quick jumping between words in the terminal.

  • Setting Up Dotfiles

    #321

    Setting up a New Mac for Development

    In this episode, we set up our dotfiles to customize aspects of bash, git, vim, and other terminal programs that are core to a good terminal experience.

  • Fastlane Boarding

    #320

    Managing external beta users can be a bit of a chore, as you have to log into iTunes Connect and add them one by one (or a batch if you have them collected already). If you’re opening your beta to a wider audience, you can save a lot of time by automating it. In this episode we will use Fastlane Boarding to automate adding testers to Testflight.

  • Setting Up the Terminal

    #319

    Setting up a New Mac for Development

    In this episode we will setup iTerm2, profiles, custom color schemes, and fonts.

  • System Preferences

    #318

    Setting up a New Mac for Development

    In this episode we look at some of the basic system preferences on macOS High Sierra. We set up the Dock, Keyboard shortcuts, and show how to customize key repeat timing outside of the preferences window.

  • Preheating Images with Nuke

    #317

    The prefetch APIs for UITableView and UICollectionView are great for preemptively loading pages of data, as we saw in episode 315. However, to take full advantage of this API we should also leverage loading or processing data related to the cells we are about to show. One common example of this is fetching an image before the cell comes on screen. In this episode we will implement this with a handy library called Nuke. The result is quite impressive.

  • Dependency Inversion Principle

    #316

    S.O.L.I.D.

    In this episode we cover the dependency inversion principle, which states that high level components should not depend on low level components, but instead they both should depend on abstractions. We will look at two examples of this and leverage dependency injection to decouple classes from concrete dependencies.

  • UITableView Prefetching

    #315

    Extending our example from episode 309, here we implement automatic tableview paging support by utilizing the UITableViewDatasourcePrefetching protocol. With this protocol, our delegate is notified of upcoming rows the user is about to encounter, and gives us an opportunity to preemptively load data for those rows.

  • Interface Segregation Principle

    #314

    S.O.L.I.D.

    In this episode we examine ISP (the Interface Segregation Principle). This one states that a type should not depend on methods from an interface that it will never use. Often times this means that the type probably carries too many responsibilities, but breaking it apart is difficult for other reasons (perhaps too many things depend on it and changing it would be expensive). You can extract smaller interfaces that support the individual responsibilities, but still have the same class adopt it. Doing so opens up opportunities for further refactoring and testing.

  • Liskov Substitution Principle

    #313

    S.O.L.I.D.

    In this episode we examine the Liskov Subtitution Principle, which stresses the importance of the strong relationship a type has with its super type. Understanding LSP can help you identify when you are missing an important abstraction, or perhaps when inheritance is being abused as a tool.

  • Open Closed Principle

    #312

    S.O.L.I.D.

    The Open Closed Principle (or OCP) states that a class should be open for extension, but closed for modification. The goal is to write classes that are more stable, and don't require constant changes themselves to support every scenario the software encounters. Instead, having a stable class to inherit from can provide a nice extension point for our software to customize it for other needs.

  • Single Responsibility Principle

    #311

    S.O.L.I.D.

    In this episode we'll examine a type that has too many responsibilities and refactor it into multiple types, each with their own responsibility.

  • The SOLID Principles

    #310

    S.O.L.I.D.

    This episodes kicks off a new series on SOLID principles for improving at object-oriented design. Writing better code means writing code that costs less to change, which can be a crucial factor in delivering project successfully. In this series we will see how these principles apply to Swift.