ココアに何か追加できるとしたら、何を追加しますか? 大小を問わず、Cocoa に欠けていると思われる機能はありますか? フレームワークの省略のために、何度も発明しなければならなかった車輪があるのではないでしょうか?
12 に答える
組み込みの正規表現サポート ( RegexKit 風) は非常に便利です。NSRegularExpression は iOS 4.0 以降で利用できますが、Mac OS X ではまだ利用できません。
全体をメモリにロードすることなく、大きなテキスト ファイルから NSString オブジェクトを段階的に読み取る簡単な方法。(NSInputStream と NSFileHandle はそれだけでは十分ではありません。)
オプションで NSSet/NSMutableSet/NSCountedSet を作成し、オブジェクトをソートされた順序で列挙する機能 (二分探索ツリーのように) は確かに歓迎されます。同じことが Cocoa 配列にも当てはまります。現在、並べ替えられた配列を取得するには、
-[NSArray sortedArrayUsingSelector:]
orのようなものを呼び出す必要-[NSMutableArray sortUsingSelector:]
があり、セットの場合は、最初に配列を作成する必要があります。ヒープ / プライオリティ キュー。CFBinaryHeapの Cocoa ラッパー(Cocoa コレクションほど使いにくいことは間違いありません) はおそらく機能します。
各キーに複数の値を格納できるディクショナリ。一般にmultisetと呼ばれます。NSCountedSet はほとんどマルチセット/バッグであり、自分でロールバックするのではなく、キーと値の関連付け (NSMultiDictionary?) に対して同じものを用意すると便利です。
FSEventsの使いやすいラッパーです。(CFFileDescriptor はいくつかの作業を行いますが、Cocoa には簡単ではありません。)
フォーマット文字列とオブジェクトの配列 (varargs だけでなく) から NSString を作成するメソッド。This SO answerは例を示しています。プリミティブで動作させるのは難しいでしょう...おそらくNSPointerArrayですか?
さまざまなロケールの電話番号の書式設定 (および解析) を簡素化する、一貫性のある一元化された API。現在、NSNumberFormatter (または NSScanner) を使用して自分で作成する必要があり、そのプロセスは面倒でエラーが発生しやすいものです。(たとえば、NSNumberFormatter を参照して、米国の電話番号をフォーマットし、 NSString から番号以外をすべて削除してください。)
もちろん、Cocoa の単純さはいくつかの言語に比べて新鮮ではありますが、私は間違いなく一般的に多種多様なデータ構造のファンです。
dealloc で自動的に解放されるコピー/保持プロパティを指定する方法。多分
@property (nonatomic, copy, dealloc) NSString* name;
そしてもちろんRegexKit。
Core Dataエンティティ全体を一時的なものとしてフラグを立てる方法。これは、Bonjour 共有を実装する場合に特に役立ちます。
Playlist
たとえば、Song
エンティティを持つ iTunes のようなモデルがあるとします。現在、Bonjour 共有を実装するために、2 つの追加のNSObject
サブクラスTransientPlaylist
とを作成TransientSong
しています。これらは、対応する Core Data と同じメソッドをすべて実装しています。
オブジェクトの一時的なバージョンを保持するためだけに、モデル クラスの数を2 倍にする必要はありません。まったく同じように動作させたい場合や、永続性がない場合はそうではありません。
(はい、他のオプションは、一時的にしたいすべてのエンティティを格納するメモリ内永続ストアを持つことです。いずれにせよ、それは不要なオーバーヘッドです)
Keychain Servicesのより使いやすいラッパー。
.NET の世界から Cocoa に足を踏み入れると、1 つの要求があります。それは LINQ です。
ここ数か月で、近くにあるすべてのコレクションで LINQ を使用できることが大好きになりました。
間違いなくCarbon HotKeysの対応物です!
インポート/エクスポート用の組み込みの JSON サポート。