[Xcode 9.3][新機能] 関数・メソッドやプロパティの呼び出し元に素早くジャンプできるようになりました
はじめに
こんにちは!今年WWDCに参加することが決まってワクワクドキドキしている加藤です。
さて、今回は先日リリースされたXcode 9.3の新機能の1つをご紹介します。
以下、リリースノートのSource Editorの新機能からの引用です。
Added Callers to the Structured Selection Action Popover. You can now command-click on functions, methods, and properties and quickly navigate to their callers. (32587508)
どうやらメソッドやプロパティの呼び出し元に簡単にジャンプできるようになったようですね。
検証環境
本エントリは以下の環境で検証を行っています。
- macOS High Sierra バージョン 10.13.3
- Xcode Version 9.3 (9E145)
試してみた
早速試してみます。
検証用ソースコード
検証用に以下のソースコードを作成しました。 ※検証用なので内容に深い意味はありません。
import Foundation struct User { let identifier: String let name: String }
import Foundation class UserRepository { private let users = [ User(identifier: "1", name: "Kato"), User(identifier: "2", name: "Nakamura"), User(identifier: "3", name: "Honda"), ] func findUser(byIdentifier id: String) -> User? { return users.first { $0.identifier == id} } }
import UIKit class AViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let repository = UserRepository() let user = repository.findUser(byIdentifier: "2") print(user?.name as Any) } }
AViewController
がUserRepository
のfindUser(byIdentifier)
を呼び出しています。
メソッド名をcommandキーを押しながらクリックしてCallerを選択
この状態でUserRepository
のfindUser
をcommandキーを押しながらクリックし、ポップアップメニューに表示される「Caller」をクリックすると、呼び出し元であるAViewController
にジャンプします。
gifで見るとわかりやすいですね。
呼び出し元が複数ある場合はどうなるのか
上述の場合、UserRepository
のfindUser(byIdentifier)
を呼び出しているのはAViewController
のみであったためCallerをクリックした際にすぐにAViewController
にジャンプしましたが、呼び出し元が複数ある場合はどうなるのでしょうか?
ということでBViewController
を作って、AViewController
と同じようにUserRepository
のfindUser(byIdentifier)
を呼び出してみます。
import UIKit class BViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let repository = UserRepository() let user = repository.findUser(byIdentifier: "2") print(user?.name as Any) } }
この状態でUserRepository
のfindUser
をcommandキーを押しながらクリックします。よく見ると、メニューも「Caller」から「Callers...」に変わっていることがわかります。「Callers...」をクリックすると呼び出し元が複数表示され、選択すると該当の場所にジャンプするようになっていました。
こちらもgifで見るとわかりやすいと思います。
おわりに
今回はXcode 9.3で関数・メソッドやプロパティの呼び出し元に素早くジャンプできるようになったことをご紹介しました。 こういう便利な機能をどんどん使って開発していきましょう!