今更Objective-Cをやる その1
なぜ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