CopyOnWriteSwift 1.0.4

CopyOnWriteSwift 1.0.4

Maintained by Quang DD9.


CocoaPods compatible Carthage compatible Swift Package Manager


Copy-on-write is a common computing technique that helps boost performance when copying structures. To give you an example, imagine an array with 1000 elements inside it: if you copied that array into another variable, Swift would have to copy all 1000 elements even if the two arrays ended up being the same.

This problem is solved by using copy-on-write: when you point two variables at the instance, they both point to the same underlying data, if you modify the second variable, compiler takes a full copy at that point so that only the second variable is modified - the first isn't changed.

In Swift, only some kinds of value type are implemented under copy-on-write such as Array. We're here to bring copy-on-write to support all value types in Swift by using a simple annotation: @CopyOnWrite

import CopyOnWriteSwift

struct Foo {...}

var foo1 = Foo()        // memory_address: 0x60000006e420

var foo2 = foo1         // memory_address: 0x60000006e420

foo2.mutatingMethod()   // memory_address: 0x6080000a88a0

without @CopyOnWrite

struct Foo {...}

var foo1 = Foo()        // memory_address: 0x60000006e420

var foo2 = foo1         // memory_address: 0x6080000a88a0

This library was inspired by Writing High-Performance Swift Code from Apple/swift



CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate CopyOnWriteSwift into your Xcode project using CocoaPods, specify it in your Podfile:

source ''
platform :ios, '11.0'

pod 'CopyOnWriteSwift', '~> 1.0.0'

Then, run the following command:

$ pod install

Carthage is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate CopyOnWriteSwift into your Xcode project using Carthage, specify it in your Cartfile:

github "Duyquang91/CopyOnWriteSwift" ~> 1.0.0
Swift Package Manager

To use CopyOnWriteSwift as a Swift Package Manager package just add the following in your Package.swift file.

// swift-tools-version:4.2

import PackageDescription

let package = Package(
    name: "HelloCopyOnWriteSwift",
    dependencies: [
        .package(url: "", .upToNextMajor(from: "1.0.0"))
    targets: [
        .target(name: "HelloCopyOnWriteSwift", dependencies: ["CopyOnWriteSwift"])


Steve Dao
Senior Software Engineer at NTUC Enterprise Co-operative Limited, Singapore.


CopyOnWriteSwift is released under the MIT license. See LICENSE for details.

About header photo

The header photo is a famous place named Cầu Vàng (Golden Bridge) in Da Nang, Vietnam. If you are going to visit Vietnam, don't forget to take a photo there!