Foundation や Cocoa フレームワークを使ったマンドラインツールでのオプションの処理には、Cのライブラリ関数である getopt(3) や GNU の getopt が普通に使えるが、NSUserDefaults を使うともっと簡単にオプションの処理をすることができる。
リンク先にあるように、とっても簡単。
オプション自体が存在していなくても、BOOL、整数、実数型のオプションの引数が適当に(NO、0、0.0 に)設定されてしまうのはちょっと注意が必要だけど、それらのオプションのデフォルト値として考えてしまえば例外を設けなくていいので、逆に便利かもしれない。
ただし、getopt(3) のようにオプションを取り除いた引数を残すというのができないので、残りの引数の処理が必要な場合は getopt を素直に使うのほうがいいかも