C#からはいるObjective-C
こんにちは。
ITソリューション部の恩田です。
突然ですが、Objective-C はじめました。
(まだはじめたばかりです…)
そこで今回は、C#からはいるObjective-Cということで、
C#とObjective-Cの記述方法の違いについて、簡単にご紹介したいと思います。
1.クラスの定義
class SuperClass
{
}
// インターフェース
interface IMyInterface
{
}
// 継承クラス
class MyClass : SuperClass, IMyInterface
{
}
@interface SuperClass {
}
@end
// C#でいうところのインターフェース
@protocol MyProtocol
@end
// 継承クラス(ヘッダー部)
@interface MyClass : SuperClass <MyProtocol>
@end
// 継承クラス(実装部)
@implementation MyClass
@end
初めて見たときは”@”が気持ち悪いかなと思っていたのですが、すぐに慣れました。
2.メソッド定義
public static void ClassMethod (string str)
{
}
// インスタンスメソッド
public void InstanceMethod (string str)
{
}
+ (void)classMethod :(NSString* str) {
}
// インスタンスメソッド
– (void)instanceMethod :(NSString* str) {
}
初めて見たときは”+/-“とはなんぞやという感じで。
“+”がクラスメソッド、”-“がインスタンスメソッドです。
3.オブジェクト生成
var obj = new MyClass();
MyClass *obj = [[MyClass alloc] init];
newと書きたくなりますが、そこはぐっと我慢します。
4.リテラルについて
string str = “Hello World!”;
int intVal = 1000000;
bool boolVal = true;
NSString *str = @”Hello World!”;
NSNumber *intVal = @(100000);
BOOL boolVal = YES;
違いはポインタを表す”*”とbool値のYES/NOぐらいがちょっとした違いでしょうか。
※”NS”はOS X のベースとなっているNEXTSTEPの略らしいです。
最後に
どちらも、もともとC言語から派生した言語だけあってところどころ似ているので、
意外とすんなりはいれそうです。
ただ、.NET Frameworkに比べると標準のライブラリは不足しているので、
オープンソースのライブラリを使用したりする必要がありそうですね。
Objective-Cにラムダ式はないようですが、
Swiftではラムダ式をかけるみたいなので、ある程度覚えたらそちらもいつか挑戦できればと思っています。
ちなみに、いま参考にしている書籍は以下の2冊です。
どちらもとてもわかりやすくてお勧めですので、これからはじめてみようと思っている方はどうぞ。
・MAC OS X COCOAプログラミング 第4版
・詳解 Objective-C 2.0 第3版