LoginSignup
29

More than 5 years have passed since last update.

Swiftの超基本的な書き方をObjective-cと比較しながらまとめる

Last updated at Posted at 2015-11-23

概要

毛嫌いしていたSwiftをついに触り始めました。
アプリを実際に作りながら学んでいるのですが、超基本的な部分の書き方を自分の為にもメモしておきます。
そろそろSwiftやり始めるか…!という人の為になれば幸いです。

変数/定数宣言

Objective-c
// 変数
NSString *name1 = @"mizuno";

// 定数
const NSString *name2 = @"takagi";
Swift
// 変数
var name1 = "mizuno"
var name1: String = "mizuno" //型も指定出来ます
var name1: String? // optional型での宣言方法
var name1: String! // optional型での宣言方法

// 定数
let name2 = "takagi"

ポイント
・Swiftは型指定無しでも変数/定数宣言出来ます(型推論)
・「*」はいらなくなりました

差に驚いたこと
・Stringの時に「@」を付けなくても良くなった
・そもそもセミコロンつけなくても良い
・「var」で宣言した変数に値を代入を一度もしないと「letにしろ!」って怒られる
・「?」とか「!」とかついてる!

optional型について
Swiftが良いとされている理由の1つがこのoptional型であり、これがあることで
堅牢なコードがかけると言われています。
これについては書くとめちゃくちゃ長くなるので、私が参考にしてわかりやすかったページを載せておきます。

・どこよりも分かりやすいSwiftの"?"と"!"
http://qiita.com/maiki055/items/b24378a3707bd35a31a8

・[Swift] Optional型についてのまとめ
http://qiita.com/cotrpepe/items/e30c7442733b93adf46a

結構ややこしいのですが、optional型は「包み紙」という表現が結構自分の中ではしっくりきているので、それをイメージするとすごくわかりやすいかもしれません。

関数

Objective-c
- (BOOL)isValid:(NSString *)word {
    return NO;
}

- (void)didTapButton {
    if(![self isValid:word])
      return;
}
Swift
func isValid(word :String) -> Bool {
    return false
}

func didTapButton() {
    if !self.isValid(word) {
       return
    }
}

ポイント
・引数と返り値を書く場所が違うので注意
・メソッドの呼び出し方が違うので注意

差に驚いたこと
・Swiftではoverrideしているメソッドはfuncの前にoverrideをつけないとオーバーライドしていることにならないので必ずつけなければならない
・Swiftでは返り値を省略して書ける(でも引数はvoidの場合()で書かないとだめっぽい)
・if文の{ }を省略できない

クラス

Objective-c
@interface MyClass : NSObject<MyDelegateSampleDelegate>
@end

/* クラスの実装部 */
@implementation MyClass : NSObject
@end
Swift
class MyClass:MyDelegateSampleDelegate{

}

ポイント
・Swiftは.hと.mがわかれていない
・プロトコルなどはclass宣言の後に書く

差に驚いたこと
・書き方が結構違うので最初普通に戸惑う(property宣言とかないし)

終わりに

基本的なiOSの動きは変わっていないので、記法だけ慣れてしまえばある程度書けそうです!
(実際にアプリもかんたんなサンプルはすぐに作れました)
ただSwiftで出来る事が結構増えた気がするので、そこをしっかり抑えると
よりイケてるコードが書けそう。。

optional型については結構理解がしんどいかもしれませんが、
いろんな解説サイトを巡回したり、実際に書いて出るエラーを読んで潰そうと動かしてみるのが
理解を深めるのに良さそうです!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29