📖

今更Objective-Cをやる その1

2024/02/19に公開

なぜObjetive-Cをやるのか

Objective-Cというプログラミング言語を知っておられるだろうか。
AppleがSwiftの前にメインの開発言語として使っていたものである。
じゃあSwiftだけまなんでもいいのではないのか?と思われるかも知れない。
しかし、Swiftで開発していてもObjective-Cが顔を出してくるのである。
なぜならばSwiftはObjective-Cと互換性をもって誕生したからである。
ただ互換性があるというだけならばいいが、実際のところSwiftで開発すると多くのライブラリをObjective-C時代のものに依存していることがわかる。
結局、Objecive-Cになれていかなければ詳しい開発はできないと思ってよい。
なお、参考文献として
「Programming in Objective-C, Third Edition」(Addison-Wesley)
を使用する。

Xcodeで準備する

Xcode以外でObjective-Cを利用するシーンはAppleのデベロッパーではない限り、ほぼないだろう。ということでXcodeを利用する

Xcodeを起動する。
MacOS用アプリを選択、Command Line Toolを選択する。

今回はプロジェクト名はProg1、言語はもちろんObjective-Cだ。
するとこんな画面になる。シンプル。

main.mを開くと以下のコードが開かれる。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    }
    return 0;
}

参考書と違うが気にしないことにする。
Appleがしょっちゅう言語仕様を変えることは昔からなのだ。

初めてのコード

参考書に沿って変えるぞ

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Programming is fun!");
        NSLog(@"Programming in Objective-C is even more fun!");
    }
    return 0;
}

NSLogの中身を変えただけである。
出力結果は、

Programming is fun!
Programming in Objective-C is even more fun!
Program ended with exit code: 0

うん、変わってる。いわゆるHello, World的な。

改行する

Cと名前がついているようにC言語のオブジェクト指向ありみたいなかんじらしいので改行もC言語も同じだ。
\nをつければよい。


#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Texting...\n..1\n..2\n...3");
    }
    return 0;
}

出力結果

Texting...
..1
..2
...3

足し算する

足し算するのもC言語も同じだが、驚くべきことに文字列に埋め込む方法もC言語のように埋め込むための%iのような文字も必要みたいである。
Swiftならばswift print('合計: \(sum)')で埋め込めるのであるが、Objective-Cの場合はNSLog(@"合計: %i", sum); ```のようにしなければならない。

#import <Foundation/Foundation.h>

int main (int argc, const char *argv[])
{
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

   int sum;

   sum = 50 + 25;
   NSLog (@"The sum of 50 and 25 is %i", sum);
   [pool drain];

   return 0;
}

出力結果

The sum of 50 and 25 is 75

参考書はこの調子で続いていくようなので、自分でいろいろやってこれからまとめていければいいと思う。
それにしても、このC言語みたいな言語で2013年まで最先端のアプリを開発をしていたのは驚きだなあ。

Discussion