この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは!今年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)
試してみた
早速試してみます。
検証用ソースコード
検証用に以下のソースコードを作成しました。 ※検証用なので内容に深い意味はありません。
User.swift
import Foundation
struct User {
let identifier: String
let name: String
}
UserRepository.swift
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}
}
}
AViewController.swift
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)
を呼び出してみます。
BViewController.swift
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で関数・メソッドやプロパティの呼び出し元に素早くジャンプできるようになったことをご紹介しました。 こういう便利な機能をどんどん使って開発していきましょう!