IBOutlet、IBActionの解除方法

IBOutletでの接続はControl+ドラッグアンドドロップでやることが多いように思うのですが、これだけだと中で何が起こってるのかわからず、解除したいときにどこをどうすればいいのかわからなくなってしまいます。自分も今まで適当に部品やメソッドを削除したりしてなんとかしてたのですが、最近理解してきたのでメモしておきます。

おおまかな理解

IBOutletやIBActionで接続することによる変更点は

  1. IBOutlet、IBActionによる接続
  2. ViewController.hでのオブジェクトやメソッドの宣言
  3. ViewController.mでの自動生成されたメソッド(IBActionのみ)

です。内部で何が起こっているかは置いといて、外から操作できることに限った場合、1〜3をすべて削除することによって接続される前の状態に戻すことができます。2に関してはドラッグアンドドロップで生成された1行、3に関しては2の1行に対応した.mに生成されているメソッドを削除するだけで大丈夫です。1については次で説明します。

接続の解除方法

IBOutlet、IBActonでの接続を解除する方法を説明します。まず、IBOutlet、IBActionのリストをみる方法ですが、IBでオブジェクトを右クリックすると黒い画面が表示されると思います。オブジェクトのIBOutletやIBActionについては下のようにつながってる感じなものがあるので、解除したいIBOutletを探して×をクリックすることで接続を解除することができます。

また、ViewControllerを右クリックすることによってもこの黒い画面は表示されるのですが、IBOutletを解除するときでなくても全てのIBOutletのリストがみれて便利なので使い慣れておくといいと思います。
ちなみにオブジェクトやメソッドの宣言を削除しただけではこの接続は解除されないっぽいです。

IBでオブジェクトを削除したときの動作

IBの画面からオブジェクトを削除すると、IBOutletによる接続は自動的に解除されます。ただ、メソッドの宣言や内容は削除されていないので、自分でViewController.h,~.mを編集してそのOutletに対応する宣言などを削除する必要があります。自動的に削除してくれればいいのですが、おそらく今のところそのような機能はないようです。