Objective-C
目次
Objective-Cとは
Objective-C はオブジェクト指向型のプログラミング言語であり、Apple の iOS や macOS などの開発に広く使用されている。
C言語の基本構造をベースにしており、そこに Smalltalk というオブジェクト指向言語が取り入れられている。
現在は Swift という新しいプログラミング言語が iOS アプリの開発で主流として使われている。
Smalltalk … オブジェクト指向の元祖
オブジェクト指向とは
「もの」を組み立てるように表現してコンピュータに指示する考え方のことである。
ものを組み立ててプログラムを表現するために、ものの設計図である クラス (車の設計図) と設計図から作成される インスタンス (黒い車) が必要になる。
クラス (車の設計図) は使いまわして、複数のインスタンス (黒い車や赤い車など) を生成することができる。
参考:クラスの概念
Swiftとの比較
変数の宣言
Objective-C
int number = 5;
NSString *string = @"Hello, World!";
Swift
var number = 5 // 型推論により自動的に Int 型
let string = "Hello, World!" // 型推論により自動的に String 型
NSString とは
- Objective-C の文字列クラスであり、中身を変更できないオブジェクトのこと。
型推論とは
- プログラムのソースコードを見て、「この値は数かな?文字かな?」と自動で考えてくれる仕組みのこと。
- これは、プログラムを動かすための変換をする「コンパイラ」と呼ばれる仕組みが行なっている。
メソッドの呼び出し
Objective-C
[myObject doSomethingWithParameter:parameter];
Swift
myObject.doSomething(parameter)
WithParameterは必須ではないが、可読性を向上させるために推奨される
(Objective-Cに関して、[myObject doSomething:parameter];とも書くことが出来る)
コレクションの宣言
Objective-C
NSArray *array = @[@"Apple", @"Banana", @"Cherry"];
NSDictionary *dictionary = @{@"Key1": @"Value1", @"Key2": @"Value2"};
Swift
let array = ["Apple", "Banana", "Cherry"]
let dictionary = ["Key1": "Value1", "Key2": "Value2"]
NSArray とは
- 順番に要素を持つ配列。
NSDictionary とは
- キーと値のペアを持つデータ構造。
NS って何?
- Next Step (NeXTSTEP) の略で、Objective-C のクラス名の先頭に付けられている。
条件分岐
Objective-C
if (a == b) {
// 処理
}
Swift
if a == b {
// 処理
}
Objective-CもSwiftでも書き方はシンプルで、類似している
ループ
Objective-C
for (int i = 0; i < 10; i++) {
// 処理
}
Swift
for i in 0..<10 {
// 処理
}
Swift のループはシンプルなのが特徴
- Objective-C の
for
ループでは 初期化・条件・更新 の 3 つの要素を明示的に書く必要がある。 - Swift の
for-in
ループは 範囲 (Range) を指定するだけで簡潔に書ける。
まとめ
比較項目 | Objective-C | Swift |
---|---|---|
変数宣言 | int number = 5; |
var number = 5 |
文字列 | NSString *string = @"Hello"; |
let string = "Hello" |
メソッド呼び出し | [obj doSomething:parameter]; |
obj.doSomething(parameter) |
配列 | NSArray *array = @[@"Apple", @"Banana"]; |
let array = ["Apple", "Banana"] |
辞書 | NSDictionary *dict = @{@"Key": @"Value"}; |
let dict = ["Key": "Value"] |
条件分岐 | if (a == b) {} |
if a == b {} |
ループ | for (int i = 0; i < 10; i++) {} |
for i in 0..<10 {} |
Objective-Cは長年 iOS 開発の中心的な言語だったが、現在は Swift が主流となっている。
Swift はシンプルで安全性が高く、可読性も向上しているため、多くの開発者が移行を進めている。ただし、既存のObjective-Cのコードベースやレガシープロジェクトでは依然として重要な役割を果たしており、Swiftとの相互運用性を活かして活用され続けている。