Carthageを使ったプロジェクトをXcode7.3にアップデートする


## [downloads](http://developer.apple.com/downloads) からdmgをダウンロードしてインストールする.
XcodeはApp Storeよりはdmgを落とすのが賢明だそうです。
http://ericasadun.com/2016/03/22/xcode-upgrades-lessons-learned/

古いバージョンで`/Applications/Xcode.app` がインストールされている時は、`/Applications/Xcode7.2.1` とかに適当にリネームしておいておけば、併存させることができます。

Xcodeを複数バージョン使用する必要があるときは、デフォルトのXcodeを切り替えた時に[Simulatorを全部リセットする](#シミュレータを全部リセットする大事)ようにしましょう。

なおダウンロードしたdmgをチーム内でUSBとかAirDropを使ってコピーしたりすると、Xcode自体の証明書が不正なのでアプリ署名がうまくいかないことがあるような話を聞いたことがあります。個人的には、自分でDeveloper Centerにログインしてダウンロードするのが確実かと思います。

## デフォルトのXcodeを選択する
```
$ sudo xcode-select -s /Applications/Xcode.app
```

## XVim をアップデートする
[XVim](https://github.com/XVimProject/XVim)がないと手が止まるという人はアップデートしましょう。
[#935](https://github.com/XVimProject/XVim/pull/935) のPRで早速Xcode7.3対応が出ていましたのでcheckoutしてビルドします。

```
$ git fetch origin pull/935/head:935
$ git checkout 935
$ make
```

## シミュレータを全部リセットする（大事）
```
$ snapshot reset_simulators
```
tvOSやwatchOSの場合特にシミュレータがないとCarthageのビルドが失敗します。
このコマンドもよくエラーになるので2回くらい実行しておきましょう。

## Carthageのライブラリを更新
```
$ carthage build
```

もしくは

```
$ carthage bootstrap --no-use-binaries
```

必要に応じてライブラリをアップデートする必要があるかもしれません。例えば[TVMLKitchen](https://github.com/toshi0383/TVMLKitchen) では`@exported` attributeを使用しているため、[そのままではSwift2.2でビルドできませんでした](https://github.com/toshi0383/TVMLKitchen/commit/e24d05df051bad24ab488d13c47dcb4835c7321c#diff-83d48858a42134d8d765362a1f45ebd4L9)。`Cartfile` を修正してアップデートします。

```
$ editor Cartfile
$ carthage update --platform tvos TVMLKitchen
```


以上の手順で、シミュレータターゲットでビルドができることを確認できました。

## UIFont(named:size:)がエラー
シミュレータのDebugビルドなら問題なかったのですが、リリースビルドでエラーになりました😫
こちらの記事に回避方法が書いてありました。thanks..
[既存アプリの Xcode 7.3 + Swift 2.2 対応](http://qiita.com/WorldDownTown/items/b9d5d0cdabd634290f5b#name-string-size-cgsize---uifont-is-not-convertible-to-name-string-size-cgfloat---uifont)

以上の手順で、リリースビルド(archive)とipaのエクスポートまで確認できました。

## App Storeのアップデートを非表示にする
結局上の手順だけだとこうなって、
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">GM版(Xcode7.3)でdmgインストールしてもApp Storeのアップデートにはひも付けられないんですね。Notification出続ける。どうしたもんか。。 <a href="https://t.co/cP9u0JVel2">https://t.co/cP9u0JVel2</a></p>&mdash; toshi0383 (@toshi0383) <a href="https://twitter.com/toshi0383/status/712585067923513344">2016年3月23日</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

こうなりました。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ものは試しと思って、Xcode7.3をdmgインストールした状態でApp StoreからXcode7.3のアップデートを実行したら、 /Application/Xcode7.2.1.app/ がまるっと消えた。嘘だろ。。 <a href="https://t.co/VwtvC1OzkA">pic.twitter.com/VwtvC1OzkA</a></p>&mdash; toshi0383 (@toshi0383) <a href="https://twitter.com/toshi0383/status/712636549024718849">2016年3月23日</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

これで回避できるかも？（動作未確認）
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/toshi0383">@toshi0383</a> 今、手元でアップデート候補がないので試せないんですけど、右クリックすると「表示しない」みたいなメニューが出たと思うので（でなければ何度か右クリックを頑張ってみる）出たらそれを選んであげれば「アップデートあり」と検出されなくなるかもしれません。</p>&mdash; 熊谷 友宏 (@es_kumagai) <a href="https://twitter.com/es_kumagai/status/712589920053780480">2016年3月23日</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>