iOSアプリを作るなら最低限覚えておきたい「オブジェクト指向」の基礎知識初心者のためのSwiftで始めるプログラミング入門(7)(3/4 ページ)

» 2015年11月17日 05時00分 公開
[諏訪悠紀アンダースコア]

メソッド

 インスタンスにはメソッドという機能を使って、関数を持たせることができます。メソッドを使うことで、何かしらの処理をインスタンスの中で行わせることができます。

メソッド

メソッドの定義

 メソッドを定義するには、次のように書きます。

class クラスの名前 {
    func メソッドの名前() {
    }
}
メソッドの定義

 メソッドは連載第6回「プログラマーの腕の見せどころ――Swiftの関数、引数、戻り値の基本的な書き方と使い方」で使った関数と同じ書き方で定義します。引数や戻り値なども付けることができます。クラスの中では同じ名前かつ同じ引数のメソッドは複数定義できないという点に注意しましょう。

class クラスの名前 {
    // 引数付きのメソッド
    func メソッドの名前(引数名: 引数の型) {
    }
    // 戻り値付きのメソッド
    func メソッドの名前() -> 戻り値の型 {
        return 戻り値
    }
}

 それでは実践です。先ほどの「ボタン」クラスに、メソッドを追加してみましょう。次のプログラムを書いてみてください。

class ボタン {
    func 押す() {
        print("ボタンを押したよ!")
    }
}

 このプログラムでは「押す」という名前のメソッドを新たに定義しています。メソッドの中では「ボタンを押したよ!」という文字列を出力するような処理が書かれています。

メソッドの呼び出し

 関数の回で学んだときと同様、メソッドを定義しただけでは何も起こりません。「ボタン」クラスのインスタンスに対して、メソッドを実行する指示を行わなければいけません。メソッドを呼び出すときは、プロパティと同様に「.」を使います。

インスタンス.メソッド名()
メソッドの呼び出し

 「ボタン」クラスのインスタンスの「押す」メソッドを呼び出してみましょう。次のプログラムを書いてみてください。

let 決定ボタン = ボタン()
決定ボタン.押す()

 「決定ボタン」のメソッドが呼び出され、結果画面に「ボタンを押したよ!」が表示されるはずです。

メソッドの呼び出し

 関数と同様、引数を定義すればメソッドを実行するときに値を渡せますし、戻り値を定義すれば、メソッドの実行結果を受け取ることもできます。

イニシャライザー

 インスタンスには、生成されてから破棄されるまでの一連の流れがあります。インスタンスはクラスを元に生成した後に使えるようになり、必要がなくなったら破棄され、以後使えなくなります(※)。

インスタンスの生成と破棄

※インスタンスを破棄する指示については、iOSアプリの場合コンピューターがほぼ自動的に行ってくれるため(Auto Reference Counting)、自分でプログラムに明示的に書く必要はありません。少し分かりづらいところではありますが、初めのうちは生成するところだけ理解していれば問題ありません。

 インスタンスには、生成されるタイミングで何かしらの処理を行わせることができます。この処理のことを「イニシャライザー」と言います。

イニシャライザー

イニシャライザーの定義

 イニシャライザーは、次のように書きます。

class クラスの名前 {
    init() {
        // 生成されるときに行いたい処理
    }
}
イニシャライザーの定義

 「init」から書き始め、続けて「()」を書きます。「()」の中には関数と同じように、引数が入ります。続けて「{}」の中にインスタンスが生成されるときに行いたい処理を書きます。

 「ボタン」クラスの中にイニシャライザーを定義し、インスタンスの生成時に処理を加えてみましょう。次のプログラムを書いてみてください。

class ボタン {
    init() {
        print("ボタンを作ったよ")
    }
}

 このプログラムでは、イニシャライザーが呼ばれると「ボタンを作ったよ」と出力するようになっています。つまり、インスタンスが生成したときに「ボタンを作ったよ」と出力されるようになります。

 次のように、インスタンスを生成してみましょう。「ボタンを作ったよ」と結果画面に出力されるはずです。

let 決定ボタン = ボタン()
イニシャライザーの呼び出しの確認

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。