1
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 3 years have passed since last update.

プロパティの基本とスタティックプロパティ

Last updated at Posted at 2021-05-30

#プロパティとは

簡単に言うと 型に紐付いた値のことです。例えば下のようにTestっていう型をclassで定義してみます。

.swift
class Test {
  var message = "This is Test"
  func alert() {
    print(message)
  }
}

Test型のプロパティとは変数strと関数notifyのことです。
プロパティにアクセスするにはインスタンスを生成して、.プロパティ名とします。

.swift
let test = Test()

test.message
test.alert() //This is Test が出力される

もう少し細かいことも紹介します。

#スタティックプロパティ

__スタティックプロパティ__とは 型自身に紐付くプロパティのことです。
またこれに対して__インスタンスプロパティ__があります。こちらは型のインスタンスに紐付くプロパティのことです。
###インスタンスプロパティ
インスタンスプロパティは一番最初に紹介したようなプロパティです。よりインスタンスに紐付いた状態が分かりやすいサンプルコードが下のものです。

.swift
let test1 = Test()
let test2 = Test()

test1.message = "This is Test1"
test2.message = "This is Test2"

こんなふうにTestクラスのインスタンスそれぞれに値を持たせることができます。
じゃあスタティックプロパティならどうなるのか...?
###スタティックプロパティ
プロパティの宣言時にstaticキーワードをつけたものは、__スタティックプロパティ__になります。

.swift
class Test {
  static var message = "This is Test"
  func alert() {
    print(Self.message)
  }
}

Selfキーワードはインスタンスからスタティックプロパティにアクセスする時に必要なものです。

これでさっきのように値を変更しようとすると

.swift
let test1 = Test()
let test2 = Test()

test1.message = "This is Test1" //ここでエラー

エラーが出て、インスタンスからスタティックプロパティにはアクセスできません。

その代わり、直接スタティックプロパティにアクセスして値を変更することができます。

.swift
let test1 = Test()
let test2 = Test() //ここまではmessageの中身は"This is Test"

Test.message = "Changed message"

test1.alert() //Changed message
test2.alert() //Changed message

とこんな感じです。まさに型に紐付いてるということが分かりますね。

でもstatic varを使うと急に全部のインスタンスの値が変わるので不都合ありそうですね。普通に共通に値を持たせるならstatic letにしてインスタンスからアクセスできないようにするのか安全な気がします。またはインスタンスからのアクセスを制限したいなら、privateキーワードをつけるのがいいのかも。ここらへんはもう少し勉強します。

ちなみに

.swift
static let message: String

という宣言はエラーになります。スタティックプロパティは必ず、宣言時に初期値を設定しないといけません。

#最後に
非常に簡単にではありますが、プロパティの基本を押さえてみました。
具体的な使用例に出会えたら追記しますー。

間違った記述などがありましたら、是非教えてくださるとありがたいです。

#参考にした記事
https://qiita.com/pitto/items/218db772c829d4b83470

#追記 2021/6/5

こちらの記事でセルのidentifierをスタティックプロパティで宣言していて便利でした。

1
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
1
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?