Xcode 11 で作成した Mac アプリケーションでは、applicationWillTerminate と applicationShouldTerminate が呼ばれないことに気が付いた。
ファイルをドロップしたりすると、呼ばれる場合がある。
これらが呼ばれないと、アプリケーション終了時にデータを保存できないので、大変困る。
Xcode 10.1 や Xcode 9.2 で作成すると、呼ばれる。
それぞれで作成したプロジェクトを比較したところ、Xcode 11 で作成した Mac アプリケーションでは、Info.plist に、次の2項目が追加されていることに気が付いた。
<key>NSSupportsAutomaticTermination</key> <true/> <key>NSSupportsSuddenTermination</key> <true/>
NSSupportsSuddenTermination の値を false / NO にすると、applicationWillTerminate と applicationShouldTerminate が呼ばれるようになった。
追記:
2019/11/13 にリリースされた Xcode 11.2.1 も同様である。