iOS Design Pattern [Box Design Pattern] — Write better code

Ravi Ranjan
CodeX
Published in
2 min readDec 12, 2022

The box pattern is a design pattern in Swift that allows you to encapsulate a value in a box so that it can be mutated by reference. This can be useful when you need to pass a value to a function or method, but you want the function or method to be able to mutate the value.

Here’s an example of how to use the box pattern in Swift:

struct Box<T> {
var value: T

init(_ value: T) {
self.value = value
}
}

func increment(box: Box<Int>) {
box.value += 1
}

var number = Box(1)
increment(box: number)
print(number.value) // 2

In this code, we define a Box struct that takes a generic type T, which represents the type of the value that the box will hold. The Box struct has a single property, value, which is of type T.

We then define an increment(box:) function, which takes a Box object as an argument and increments the value property of the Box by one.

Next, we create a Box object called a number, which contains the value 1. We then call the increment(box:) function, passing the number box as an argument. This causes the value property of the number box to be incremented by one, so its value becomes 2. Finally, we print the value of the number box, which prints 2.

With the box pattern, we can pass a value to a function or method, and the function or method can mutate the value by reference. This allows us to avoid using inout parameters and to write more expressive and readable code.

If you liked this, click the 💚 and give a clap on this post as much as you can below so other people will see this here on Medium. If you have any queries or suggestions, feel free to comment or hit me on Twitter, or Linkedin.

--

--