SwiftとObjective-Cの書き方の違い(クラス・メソッド定義などを中心に)

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

iOS 8/OS X Yosemiteの発表およびそれに対応したXcode 6およびSwiftの発表により、OS X/iOSアプリの開発には従来のObjective-C/C/C++などに加えてSwiftが加わるようになった。さて、Swiftについて、これまでと何が違っているのかをクラスやメソッドの書き方などを中心に書いてみたい。

ファイルの構成

Objective-Cではヘッダーファイルと実装ファイルが分かれていたが、Swiftではヘッダーファイルと実装ファイルの区別はなくなった。

ファイルの拡張子

ファイルの拡張しはObjective-Cにおいてはヘッダーファイルは「.h」、実装ファイルは「.m」 ((Objective-C++では「.mm」を使う)) となっていたが、Swiftでは「.swift」となる。

クラスおよびメソッド定義

Objective-Cでは以下のような感じで行った。

ヘッダーファイル

[code lang=”objc”]@import Foundation;
@interface MyClass : NSObject
– (void)someMethod;
@end[/code]

実装ファイル

[code lang=”objc”]
@implementation MyClass
– (void)someMethod
{
// 何らかの処理を行う
NSLog(@”method called”);
}
@end[/code]

Swiftの場合は以下の通りである

[code lang=”swift”]
class MyClass : NSObject {
func someMethod() -> Void {
// 何らかの処理を行う
NSLog(“method called”)
}
}[/code]

上記を見たところ、Objective-Cの特殊な文法が若干JavaやPythonみたいな形へシフトしたような印象を受ける。

ここでは書いていなかったものの、メソッドの呼び出しではObjective-Cのような[object someMethod];のような形ではなく、Javaライクなobject.someMethod()という形になっているという変更点がある。一方で、引数ではラベルを必要とする場合があるなど、Objective-Cのような特徴も部分的に残っている。

なお、SwiftではVisual Basic for Applicationのように変数やメソッドに非ASCII文字を使えるようになったという特徴がある。しかしながら、プログラミングを考えると変数名やメソッド名などはASCII文字のみで定義するのが適切なようだが。

タイトルとURLをコピーしました