NSTextViewの選択位置の行番号とカラム番号

以前はlineRangeForRange:を繰り返してみたり、NSScannerで改行文字を探そうとしてた(これは連続した改行には効果が無い)けど、ためしにchar型に展開して改行文字を走査しても十分早く動いた。

改行文字でスプリットした数をカウントする方法もあるとどっかに書かれてたけど、そっちはどうなんだろう。

UTF-8で走査していくと、3バイト文字を3文字と判断してしまうので、とりあえずEUC-JPにして走査してみる。こうすると全角文字は半角2文字として扱われる。全角文字を1字として扱うのか、2字として扱うのか、どちらがいいんだろう。

componentsSeparatedBy:を使った方法だと、全角だろうと半角だろうと1字は1字と扱われる。ついでに内部処理がUTF-8なので多言語対応。ただちょっと遅くなる。