検証環境:
Version 13.2 (13C90)
Swift 5.5.2
UIViewController で画面表示時に何か処理を1度のみ実行したい時に lazy stored property を使って簡潔に書くやり方。
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) _ = viewDidAppearOnce } private lazy var viewDidAppearOnce: Void = { // doSomething }()
RxSwift を使っているなら
private let disposeBag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() rx.sentMessage(#selector(viewDidAppear)) .take(1) .subscribe(onNext: { _ in // doSomething }).disposed(by: disposeBag) }