2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Swifty]Struct化

Posted at

関連情報ではClassだと値を変更したら、他で参照しているところにも影響を与えるのでStructを勧めていたが、Model(Dataコントローラ)の実装次第だと思っている。ただ、これは次の関数型プログラミングの導入のためだと思うので、素直に従う。

C++のことを考えると誤解が発生しそうなので、利用するのが躊躇してしまう、リファレンス型と値というのがSwiftにあって、Structは値型のため、=で代入するとコピーとなる。ただ、自分がここで混乱してしまったが、冷静に考えると、SwiftのオブジェクトはObjective-Cのid型で、ARCでメモリ管理されているはずで、Structでは=演算子がコピーするようになっているということだろう。

値型でコピーとなるとコストの問題が気になるが、Swiftでは配列はCopy-On-Writeという考えで実装されていて、=演算子で代入する際は、idのコピーで、値の変更が派生する際に、中身のコピーが発生するので、気にする必要はないようだ。

ソースコード
GitHubからどうぞ。

https://github.com/murakami/workbook/tree/master/ios/Hand - GitHub

関連情報
文化を調和させる

【Cocoa練習帳】
http://www.bitz.co.jp/weblog/

http://ameblo.jp/bitz/(ミラー・サイト)

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?