Swift 1.2でtouchesBeganメソッドのNSSetがSetへ変更されました

公開日: : 最終更新日:2016/02/10 iOSアプリ開発

記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

20150802-085831.jpg

Swift 1.2で、touchesBegan・touchesMoved・touchesCancelled・touchesEndedなどのメソッドが変更となりました。

Swift 1.2でSetが使えるようになったためです。

    

Swift 1.1までのtouchesBeganメソッド

Swift 1.1までのtouchesBegan・touchesMoved・touchesCancelled・touchesEndedメソッドは、以下のようになっていました。

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
}

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
}

override func touchesCancelled(touches: NSSet, withEvent event: UIEvent!) {
}

override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
}

    

Swift 1.2のtouchesBeganメソッド

Swift 1.2では以下のように、touchesのデータ型がNSSetからSet<Object>へ変更となっています。

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
}

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
}

override func touchesCancelled(touches: Set<NSObject>!, withEvent event: UIEvent!) {
}

override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
}

    

タッチ座標の取得方法

Swift 1.1では、例えば以下の様なコードでタッチ座標を取得します。

if let touch = touches.anyObject() as? UITouch {
    // do something
}

    

Swift 1.2では、例えば以下の様なコードでタッチ座標を取得します。

if let touch = touches.first as? UITouch {
    // do something
}

    

@akio0911はこう思った。

個人的には、Setなのにfirstというメソッドでデータを取得するのが違和感あります。Setには順番がないはずなので・・・。

あと、Swiftにおけるコードの書き方はどんどん変わっていきますね。Objective-CからSwiftへの移行は早めに行ったほうが、手間がかからなそうです。

    

    

この記事を書いた人
あきお(@akio0911
派手髪iOSエンジニア。Twitterアカウントは@akio0911。YouTubeチャンネル「あきおチャンネル」にてiOSアプリ開発講座を公開中。著書に「iPhoneアプリ開発レシピ」「cocos2d for iPhoneレッスンノート」など。iOSアプリ開発をテーマとしたオンラインサロン「アプリ道場サロン」を運営。東京・大阪にてアプリ開発講座「アプリクリエイター道場」を主催。

関連記事

この記事が気に入ったら「いいね!」しよう

Twitterで更新情報をゲット!

PAGE TOP ↑