(この記事はMac OS X 10.3.9でのCocoaについて書かれている。手抜き実装はその後のバージョンで直されているかもしれない) Cocoaでは文字列は少なくともPantherの時点でUnicode3.2に対応している。 NSStringのインターフェイスを見ると16bitのunicharが基本になっているが、16bitを越える範囲のコードポイントもサロゲートペアを用いて表現できる。 じつは、NSStringのlengthは文字単位で数えた長さに一致するとは限らないのである。文字列の操作もサロゲートペアを分断するようなことがそのままできてしまう。 ではNSString自体はサロゲートペア未対応なのかというとそうでもない。rangeOfCharacterFromSet:などではきちんとサロゲートペア対応している。Cocoaではもともと文字合成のことも考えられているため、サロゲ