# 51 : Xcode Is Not Alone

Published on

Get weekly handpicked updates on Swift and SwiftUI!

Weekly Comment

After JetBrains announced the discontinuation of updates for AppCode, many developers worried that Xcode would lack competition, lose the motivation to grow, and that there would be fewer alternatives for developing Swift projects. However, with the continuous improvement of the plugin provided by the Swift Server Work Group for VSCode, and the emergence of AI editors like Cursor the ecosystem of Swift development tools is quietly changing. Now, developing Swift projects on VSCode or Cursor is becoming not only increasingly easy but also a better experience.

In the past week, I tried a new way of working: I opened the same project simultaneously in Xcode, VSCode, and Cursor, frequently switching between them. This approach not only allowed me to leverage the unique advantages of each editor but also improved my mood through visual changes (such as different layouts and theme colors), effectively helping me overcome challenges in development.

Unlike AppCode, strictly speaking, VSCode (Cursor) and Xcode are not in direct competition. On one hand, VSCode fills the gap for developing Swift code outside the Apple ecosystem, while both bring additional conveniences to developers within the Apple ecosystem. For instance, in my experience, their AI predictions, flexible and powerful plugin ecosystems, ability to edit special project files (such as hidden files), and Git management features serve as strong supplements to Xcode’s limitations.

Nonetheless, Xcode’s position in the Apple development ecosystem remains unshakable. Many resource files can only be visually edited in Xcode, and only Xcode can automatically perform necessary conversions and packaging during compilation. Additionally, personally speaking, perhaps due to long-term use, I find Xcode’s UI presentation when editing code to be the most comfortable and efficient for me.

A mature programming language and development ecosystem need to offer developers diverse choices. This not only allows developers to select the most suitable tools based on personal preferences and project requirements but also fosters healthy competition among these tools, promoting mutual improvement. In the long run, this trend towards diversification will bring more possibilities to Swift developers: we may see more innovative development tools emerge, existing tools continually enhance their features, and even Xcode itself may accelerate its development under such influence.

Originals

NSManagedObjectID and PersistentIdentifier: Mastering Data Identifiers in Core Data and SwiftData

Fatbobman

Core Data and SwiftData are powerful data management frameworks designed by Apple for developers, capable of efficiently handling complex object relationships, hence known as object graph management frameworks. In these two frameworks, NSManagedObjectID and PersistentIdentifier serve similar functions and are both extremely important. This article will delve into their features, usage methods, and important considerations.

Recent Selections

Mastering container views in SwiftUI. Basics

Majid Jabrayilov

For a long time, SwiftUI developers have struggled to build custom container views that match the functionality of the official ones due to the lack of certain advanced features. At WWDC24, Apple greatly enhanced the functionality of Group and ForEach, introducing new features for container value passing. With these innovative APIs, developers can now build powerful container views with functionalities equivalent to the official ones. In this article, Majid Jabrayilov provides a detailed analysis of how to use these new tools and their benefits. This post is the first in a series about custom containers, and developers are encouraged to follow up on subsequent content to fully utilize these powerful features.

How to Reduce Local AI Model Size on iOS

Daniel Jia

As more and more iOS applications integrate AI functionalities to enhance user experience, the size and initialization speed of models have become crucial factors. In this article, Daniel Jia discusses several strategies to reduce the size of local AI models on iOS, improving performance and response speed. These strategies include model compression, pre-warming models using system caching, and remote downloading with asynchronous loading. These techniques not only improve app efficiency but also enhance the user interaction experience.

Mastering blend modes in SwiftUI

Giovanni Monaco

Blend modes use mathematical formulas to combine the colors of multiple layers of pixels, determining each pixel’s influence on the final image. In this article, Giovanni Monaco delves into techniques for implementing blend modes in SwiftUI and how to use them to create compelling visual effects. The article covers common effects such as darkening, lightening, contrast enhancement, and color mixing, providing practical examples to guide developers in mastering these techniques.

How to Use NSFetchedResultsController Memory-Wise in Core Data

Khoa

Core Data offers a rich set of APIs that enable developers to achieve a fine balance between performance and memory usage. In this article, Khoa explores effective memory management strategies when using Core Data’s NSFetchedResultsController to ensure smooth app performance.

The techniques discussed, such as batch fetching, lazy loading of relationships, working in private contexts, and using predicates to limit fetched objects, are also applicable to SwiftData. However, due to the lack of equivalent APIs or existing bugs, some of the other strategies cannot currently be implemented in SwiftData.

Introduction to Communication Patterns in SwiftUI

Mohammad Azam

In this article, Mohammad Azam explores several commonly used communication patterns in SwiftUI, including closures, @Binding, and @Environment objects. By comparing these approaches, Azam emphasizes the importance of choosing the right communication strategy for different development scenarios. Making an appropriate choice can help avoid relying on manual refresh mechanisms in SwiftUI, allowing developers to make the most of its declarative design and enhance app performance and responsiveness.

Getting Started with Mesh Gradients on iOS 18

Donny Wals

Mesh gradients allow you to display a dynamic range of colors within a grid, creating complex and vibrant visual effects that differ significantly from traditional linear or radial gradients. In this article, Donny Wals provides a detailed overview of this new feature introduced in SwiftUI at WWDC24. The author points out that mesh gradients can enhance UI when applied tastefully, but may also have a negative impact if overused.

Rudrank Riyam developed an iOS app called Meshing, which leverages this feature to help users transform their ideas into beautiful images, suitable for wallpapers, websites, and various other scenarios.

Weekly Swift & SwiftUI insights, delivered every Monday night. Join developers worldwide.
Easy unsubscribe, zero spam guaranteed