nFact

n!

unrecognized selector sent to instanceの対処法

初めて画像の投稿をしてみる。

f:id:noko_k:20130808150532p:plain

unrecognized selector sent to instanceエラー
これはメソッドを呼び出そうとしたが無くて落ちたということ

これはどういう時に起きるかというと、

f:id:noko_k:20130808150753p:plain

この場合、タップされた時※1ModalViewControllerlabelChangeButtonTappedというメソッドが呼ばれるようになっているが、

このlabelChaneButtonTappedというメソッドがModalViewController.hにもModalViewController.mにも記述されてないときに起きる。

これの厄介なところはコンパイルは成功し実際に動かしてみないとわからないという所。

f:id:noko_k:20130808151724p:plain

このように変更すれば解決出来る。

※1厳密には、Touch up insideは指が離れた瞬間である

zshのコマンド修正機能を一部のコマンドでのみ無効化する

zshにはコマンドの修正機能があります。これは

setopt correct

と.zshrcに追記してsource .zshrcを実行することで修正機能が使えるようになります。

例えばlsをksとかに打ち間違った時、

noko-iMac% ks  
zsh: correct 'ks' to 'ls' [nyae]?  

みたいな感じで修正してくれるので便利なんですが
(例えばここでyキーを押すとlsが実行される)、
たまに悪さをする時があります。

noko-iMac% scala -version 
zsh: correct 'scala' to 'cal' [nyae]?   

と、コマンド名が合ってるのにもかかわらず修正の確認が出てきます。
nキーを押すと元のscala -versionが実行されるのですが、いちいちnキーとか押してられません。

これを一部のコマンドでのみ無効化する方法があります。

alias scala="nocorrect scala"

と.zshrcに追記すると、scalaと打ち込んだ時のみ修正が効かなくなります。
なので

noko-iMac% scaka
zsh: correct 'scaka' to 'scala' [nyae]? n

このようにscalaへの修正が無効化されるわけではありません。

参考URL http://sugilog.hatenablog.com/entry/20091223/1261574279