Swiftの「クラス」と「ストラクチャ」 その② ~ subscript、タイプキャスト、メモリ管理(およびクラス、ストラクチャ、列挙型のおさらい)
アップルの新プログラミング言語「Swift」を探検しよう 第5回
クラス、ストラクチャ、列挙型のおさらい
本連載の最近3回分で、列挙型とクラスとストラクチャを扱ってきました。ここで各機能をおさらいしてみます。
クラスとストラクチャには、宣言方法から、プロパティの付け方、初期化の仕方、インスタンスメソッドとタイプメソッドの呼び出しまで、共通する機能が多くあります。
- 保持のためのプロパティ
- 計算のためのプロパティ
- 振る舞いを提供するためのメソッド
- subscriptシンタックスで値にアクセスするための機能(次回解説します)
- イニシャライザ(init)
- エクステンションを用いて機能を拡張可能(Objective-Cのカテゴリに類似)
- プロトコル準拠
列挙型には、値を保持するためのプロパティはありませんが、計算プロパティ、メソッド、subscriptはクラスやストラクチャと同様に使用できます。また、次の機能はクラスとストラクチャにはない、列挙型だけの機能です。
- そのものを値として扱えるメンバーの機能
- メンバーに付随した値の型を定義できる機能
- 従来のNS_ENUMのような値の集合を表す機能
最後に、クラス、ストラクチャ、列挙型の機能をまとめた比較表を次に示します。◯はクラス、ストラクチャ、列挙型においてその機能があること、☓は逆にないことを表しています。
| クラス | ストラクチャ | 列挙型 | |
|---|---|---|---|
| 型 | 参照型 | 値型 | 値型 |
| 代入時 | 参照渡し | コピー | コピー |
| 保持プロパティ | ◯ | ◯ | ☓ |
| 計算プロパティ | ◯ | ◯ | ◯ |
| メソッド | ◯ | ◯ | ◯ |
| メンバー | ☓ | ☓ | ◯ |
| 継承 | ◯ | ☓ | ☓ |
| イニシャライザ | ◯ | ◯ | ◯ |
| デイニシャライザ | ◯ | ☓ | ☓ |
| subscript | ◯ | ◯ | ◯ |
| ARC管理下 | ◯ | ☓ | ☓ |
| プロトコル | ◯ | ◯ | ◯ |
| エクステンション | ◯ | ◯ | ◯ |
次回は
今回はsubscript、アクセス修飾子、タイプキャスト、ARCにかかわる弱参照キーワードを解説しましたが、いかがでしたでしょうか。次回は、プロトコルとエクステンションを中心に解説します。お楽しみに。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- アップルの新プログラミング言語「Swift」を探検しよう連載記事一覧
-
- Objective-Cより柔軟かつ安全なプログラミングを可能にするSwiftの「ジェネリク...
- Swiftの「エクステンション」と「プロトコル」~ 機能と役割、Objective-Cとの...
- Swiftの「クラス」と「ストラクチャ」 その② ~ subscript、タイプキャスト、...
- この記事の著者
-
yad(ヤド)
クラスメソッド株式会社のアプリケーションエンジニア。iPhoneアプリケーションの開発に2年以上従事している。開発に使用するObjective-Cのみならず、関数型言語Haskellや機械学習などにも関心がある。「Developers.IO」に寄稿した記事の一覧
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
