header_medi8

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

2016年12月8日木曜日

Macアプリを起動したけどMenuにアプリ名が表示されるだけでウィンドウが表示されないときの対処法

OS X 10.10 で問題なく動いていた Mac アプリが 10.8 で起動しないという問題に遭遇した。

いや、正確には起動はしてるようだ。
Menuバーにアプリ名は表示されているし、Dock にアイコンも表示されている。

でも、メニューバーのアプリ名以降のメニューの生成や、Window の生成に失敗しているのか、
起動しても何も表示されない。

そこで、次の2つのことを試してみました


  • applicationDidFinishLaunching:: で標準エラー出力に asl_log でログを出力してみる
  • 空のプロジェクトで症状を確認


applicationDidFinishLaunching:: で標準エラー出力に asl_log() でログを出力してみる


アプリケーションの起動後に呼ばれる applicationDidFinishLaunching:: が実行されているかの確認をするために、
ここでログを出力するようにしてみましたが、ターミナルには何も出力されない。

つまり、アプリケーションの起動処理のどこかで失敗してるはず。
そこで、各View の viewDidLoad でも asl_log() でログを出してみることにします。

しかし、これでも何も表示されない。
もっともっと根本的なところが原因なのか?

空のプロジェクトで症状を確認


ということで、空のプロジェクトで同様の問題が発生するのか確認してみた。
すると、同じ症状が発生しやがった!なんでやねん!

ただ、これでプログラムではなく、設定等の問題であることがわかった。
空のプロジェクトと問題のプロジェクトで Project Setting とか見比べてみるも、
特に違いがあるようにはみえないけど。。。

もう1回試してみることにして、新規プロジェクト作成。
ここで、おもむろに「Use Storyboardst」のチェックを外して、
Storyboard を使わずに、xib ファイルを使うようにしてみた。




「まあ、これだけでは何も変わらないですよね〜」と思いながら実行ボタンを押してみた。。。


すると、10.8 でも起動するではないですか。
Storyboard 使えないの?と思ってその辺りのキーワードで検索を掛けてみると、
Apple Developer Forum に以下のスレッドがありました。

https://forums.developer.apple.com/thread/16210

これによると、OSX では Storyboard は10.10 からしか使えないので、
10.9 以前のアプリをサポート対象とする場合は、Storyboard の使用には気をつけましょうとのことらしい。

エラー出すなり、選択できないようにするとかしてよ。。。

てなわけで、全部 xib で作り直して無事 10.8 でも起動できました。