🐰
_NS_4445425547 または NS🐞 で隠されたデバッグ用UIを呼び出す(macOS)
近頃英語圏のmacOS dev界隈で話題になっていたネタを紹介します。
macOS app(ネイティブ)を開発する際に、実行引数に次のキーと値を与えると、システムに隠されたデバッグ用UIを呼び出すバグメニューが有効になり、メニューバーから使用可能になります。
_NS_4445425547
: true
または
NS🐞
: true
具合的には、UserDefaultsまたはXcodeの「Arguments Passsed on Launch」の仕組みを使います。
macOS appでバグメニューを有効にした様子
ちなみに4445425547は、Unicode表の16進数アドレスに置き換えると“DEBUG”に相当します。
UserDefaultsの場合
コードからランタイムで書き込む方法と、defaultsコマンドで外から書き込む方法があります。
-
_NS_4445425547
→true
defaults write BUNDLE_IDENTIFIER _NS_4445425547 -bool true
// Swiftの場合
UserDefaults.standard.set(true, forKey: "_NS_4445425547")
## defaultsコマンドの場合(指定したBUNDLE_IDENTIFIERのアプリ限定)
% defaults write BUNDLE_IDENTIFIER _NS_4445425547 -bool true
## defaultsコマンドの場合(すべてのアプリを対象)
% defaults write -g _NS_4445425547 -bool true
## 設定を削除
% defaults delete BUNDLE_IDENTIFIER _NS_4445425547
% defaults delete -g _NS_4445425547
defaultsコマンドでは、-g
またはNSGlobalDomain
を対象にすると、ほぼ全てのアプリで有効にすることができるようです。ただし、Adobe系など一部のソフトウェアではうまく機能しないなどの情報も耳にしました。
Xcodeの場合
Scheme編集パネルで「Arguments Passsed on Launch」に値を書き込みます。頭にハイフン-
をつけて、スペースを開けてYES
にします。以下どちらか好きな方一つを使えます。
-_NS_4445425547 true
-NS🐞 true
参考情報
Discussion