Xcode6で新規のアプリを開発した時に気づいたことをまとめます。
アプリの仕様は以下のとおり。
- 開発言語はSwift
- Cocoapodsで既存Objcのライブラリを利用
- デプロイターゲットはiOS8以上
- Storyboardを利用
- AutolayoutとSizeClassesを利用
開発環境は以下のとおり。
- Xcode6はBeta2を利用
- 検証実機はiOS8 beta2をインストールのiPhone5
【頻度中】コンパイルエラーXXXHeaderファイル has been modified since the precompiled header
fatal error: file '/Applications/Xcode6-Beta2.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIVisualEffectView.h' has been modified since the precompiled header '/Users/susieyy/Library/Developer/Xcode/DerivedData/news-app-exyunxyrtahmdkapftamcvrobgtv/Build/Intermediates/PrecompiledHeaders/Pods-FrameAccessor-prefix-gtykjxadubuzxycgfpjhmzqeciwi/Pods-FrameAccessor-prefix.pch.pch' was built
自分の環境だとXcode5を開いて、Xcode6に戻ってきたり、Cocoapodsを追加した場合などに高頻度で発生します。
シミュレーターコンパイルだと発生し実機コンパイルだと発生しない場合もあります。
さらにUIVisualEffectView.h
ファイルが更新もされていなくても発生します。
-rw-r--r--@ 1 hoge admin 3.8K 6 15 16:34 UIVisualEffectView.h <-
-rw-r--r--@ 1 hoge admin 3.4K 6 15 16:34 UIWebView.h
-rw-r--r--@ 1 hoge admin 6.4K 6 15 16:34 UIWindow.h
対応方法
毎回なぜか、なおる対応方法がまちまちで、以下のいずれかでなおりました。
- ビルドをクリーンする
- DerivedDataを削除する
- OSXを再起動する
- Xcode6を入れなおす
【頻度中】IBOutletのStoryboardとのコネクションありが表示されない場合がある
StoryboardとIBOutletでコネクションを繋いでいても接続状態の表示にならない場合があります。
コードから接続先のStoryboardへジャンプできなくて不便です。
コンパイル後のアプリの挙動は正しく接続されている状態で動作するので問題ありません。
【頻度低】Storyboardのファイルを開いてもXMLで表示される
Main.storyboardファイルを開いても常にXMLで表示されるようになりました。
一度明示的にInterface Builderで開くとなおります。
【頻度低】ソースコードハイライトと入力補完が効かなくなる
Beta1のXcode6ほどではないですが、Beta2でもたまに発生します。
ソースファイル内に日本語を記載しないと安定する傾向にあるように感じます。
// Copyright (c) 2014年 Wantedly. All rights reserved.
コピーライトの年
は一括置換で排除するか、コピーライトに日本語が記載されないよう設定を変更しています。
$ defaults write com.apple.dt.Xcode AppleLocale en_US
【頻度低】シミュレーターで実行しようとするとエラーになる
Xcode6とシミュレーターを再起動したらなおりました。
【常時】Xcode5とXcode6のシミュレーターで同時にアプリを起動できない
Xcode5シミュレーターとXcode6シミュレーターを同時に起動している場合、どちらかのシミュレーターのアプリしか起動できません。
【常時】誤ってプロジェクトをXcode5で開いてStroyboardを編集保存するとXcode6でStroyboardがおかしくなっている
Xcode5を起動すると親切にも最後に開いていたXcode6専用のプロジェクトを自動で開いてくれることがあります。
Finderからプロジェクトファイルをダブルクリックして開くとXcode5で開かれることもあります。
一見Xcode5とXcode6の画面はよく似ているので、気づかずに進めているとStroyboardがおかしくなる場合があります。
こまめにコミットを行ってロールバックできるように対応しています。
【頻度中?】switchと書くと必ずXcodeがフリーズする
いつの頃かswitch
と入力するとフリーズするようになりました。ペーストで入力しても同様です。
昨日までは入力できていたのですが。。。
OSXを再起動してもなおらず、フリーズが100%再発するようになってしまいました。
フリーズ状態を放置しているとどんどんメモリを消費して、OSXが固まってしまうので早めにXcodeを強制終了しましょう。
仮想メモリが70GBってやばいですねw
【頻度中】iOS8の実機転送でアプリ実行中に一瞬フリーズする
iOS8をインストールした実機(iPhone5)にアプリを転送して動作確認していると、一瞬フリーズしてまったくユーザ操作(タップやスワイプ)を受けつけなくなります。Swiftのアプリだからなのか、iOS8SDKだからなのか、iOS8の実機だからなのか原因を切り分けできていませんが、FacebookアプリをiOS8の実機で利用していても発生しているので、iOS8の実機のせいかもしれません。
##【常時】 iOS8の実機転送でアプリの動きがもっさりしている
開発中の実機転送したアプリもそうですが、Facebookのアプリもアニメーションがもっさりして、タイムラインをスクロールすると結構ガリガリと一瞬ひっかかります。画面遷移も一呼吸おいてから遷移される感じです。iOS8のBetaが改善されるまでアニメーションのチューニングは難しそうです。
【頻度低】Xcode6がいきなりクラッシュする
Beta1に比べてだいぶクラッシュ頻度はだいぶ下がりました。開発して苦にならない程度に落ちます。
編集中のソースコードは飛んでしまうので、こまめに保存して対応しています。