CopyOnWriteSwift 1.0.4

CopyOnWriteSwift 1.0.4

Quang DD9 维护。



CopyOnWriteSwift

CocoaPods compatible Carthage compatible Swift Package Manager

概述

写时复制(Copy-on-write,COW)是一种常见的计算技术,可以在复制结构时提高性能。例如,假设一个数组内部包含1000个元素:如果您将这个数组复制到另一个变量,Swift 将必须复制所有1000个元素,即使这两个数组最终结果是相同的。

写时复制(COW)通过当您指两个变量指向一个实例时,它们都指向相同的底层数据来解决此问题。如果您修改第二个变量,编译器则在此时执行完整的复制,这样只有第二个变量被修改 - 第一个变量不变。

在 Swift 中,只有一些类型的值类型支持写时复制,例如 Array。我们在此使用简单的注解 @CopyOnWrite 将写时复制引入支持 Swift 中的所有值类型。

import CopyOnWriteSwift

struct Foo {...}

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

var foo2 = foo1         // memory_address: 0x60000006e420

foo2.mutatingMethod()   // memory_address: 0x6080000a88a0

@CopyOnWrite

struct Foo {...}

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

var foo2 = foo1         // memory_address: 0x6080000a88a0

此库受到了 Apple 的 Writing High-Performance Swift Code 的启发:

作者:

CocoaPods

一个为 Cocoa 项目提供依赖管理器的工具。您可以使用以下命令安装:

$ gem install cocoapods

要使用 CocoaPods 将 CopyOnWriteSwift 集成到您的 Xcode 项目中,在您的 Podfile 中指定它:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!

pod 'CopyOnWriteSwift', '~> 1.0.0'

然后,运行以下命令:

$ pod install
Carthage

Carthage 是一个去中心化的依赖管理器,它自动将框架添加到您的 Cocoa 应用程序中。

您可以使用以下命令使用 Homebrew 安装 Carthage:

$ brew update
$ brew install carthage

要使用 Carthage 将 CopyOnWriteSwift 集成到您的 Xcode 项目中,在您的 Cartfile 中指定:

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

要将 CopyOnWriteSwift 作为 Swift Package Manager 包使用,只需在您的 Package.swift 文件中添加以下内容。

// swift-tools-version:4.2

import PackageDescription

let package = Package(
    name: "HelloCopyOnWriteSwift",
    dependencies: [
        .package(url: "https://github.com/duyquang91/CopyOnWriteSwift.git", .upToNextMajor(from: "1.0.0"))
    ],
    targets: [
        .target(name: "HelloCopyOnWriteSwift", dependencies: ["CopyOnWriteSwift"])
    ]
)

作者

Steve Dao
新加坡 NTUC Enterprise Co-operative Limited公司的高级软件工程师。

许可协议

CopyOnWriteSwift 在 MIT 许可协议下发布。有关详细信息,请参阅 LICENSE

关于头部图片

头部图片是越南岘港著名的 Cầu Vàng (Golden Bridge)。如果您要去越南旅行,别忘了在那里拍照!