Swiftと比較して学ぶObjective-C【基礎文法】
次のiOSの案件がSwiftとObjective-Cを
混合されたアプリだと知り、
このままだとついていけない事が想像できたので、
慣れているSwiftと比較してObjective-Cの基礎文法を学習する備忘録。
Print関数
Swift
print("ここに書いた内容がコンソールに表示")
NSLog(@"ここに書いた内容がコンソールに表示");
出力結果はどちらも、
ここに書いた内容がコンソールに表示
である。
比べるとSwiftがいかにシンプルかがわかる。
まとめると、、、
@と;の存在がめちゃやっかい。
コンパイルエラーで伝えてくれるから、慣れれば問題ないかな
初期化した値をコンソールに表示
文字列編
Swift
let name: String = "自分の名前" print(name)
NSString *name = @"自分の名前"; NSLog(@"%@", name);
全然見慣れない。。。。けどまとめてみる。
- 文末に;がある。
→ どうも、Objective-Cでは最後に;を書くのがお決まり。
- 型を一番最初に宣言。
→ この違いの把握で、見え方が全然変わってくる
- 型の名前はString → NSString
→ まあ理解できる
- 宣言の文章の最初に*を書く必要がある。
→ 気持ち悪いが、コンパイルエラーがなるので慣れの問題
- @"%@", 宣言名 でコンソールにログが出せる
→ メモリ内のデータにアクセスする場合は%@ を使用すると思っておこう
数値編
Swift
let old: Int = 23 print(old)
NSNumber *old = @23; NSLog(@"%@", old);
Objective-CでInt型ではなく、NSNumberって言うのね。理解。
配列
Swift
let country: [String] = ["日本","イタリアン","フランス","アメリカ","中国"]
NSArray *country = @[@"日本",@"イタリアン",@"フランス",@"アメリカ",@"中国"];
配列にすると@のしつこさがより鮮明になりますねmm
for文
先ほど、配列の例をそのまま使う
Swift
let country: [String] = ["日本","イタリアン","フランス","アメリカ","中国"] for i in country { print(i) }
NSArray *country = @[@"日本",@"イタリアン",@"フランス",@"アメリカ",@"中国"]; for(NSString *i in country) { NSLog(@"%@", i) }
for文はSwiftをパッと見て異なる
(NSString *i in country)と()でくくるのは、まあいいとして、
注目はObjective-Cはiに対してNSString型だと宣言をしていたところだ。
試しにNSStringを消してみると、コンパイルエラーになる。つまり、必須ってことだ。
Swiftでのfor文に型を書いているコードは正直見たことがない。
ちなみに型を宣言してみると、ちゃんとコンパイルが成功する。
以下がそのコード
Swift
for i: String in country { print(i) }
country の型が [String]だから、
i の型が String なのは自明なのだが、
今回Objective-Cの学習で、この自明が学べた。
ありがとう。Objective-C。