2009-08Takeba.mehttp://takebayashi.asia/に移転しました。このブログは今後更新されません。LeopardにしたらOMWizardが起動しなくなったので、その対応版です。細かい挙動も修正しましたが、新機能は特にありません。Leopard専用です。それ以前のシステムでは動きません。v1.2を使用してください。OMWizardは、Macの中に散らばっているファイルやフォルダをOpenMetaのタグを使って簡単に探し出すためのアプリです。最初はタグのリネームアプリだったのに、いつのまにか検索用になってました。Leopardで起動できなくなったのは、QuickLookの仕様が変わったから。プライベートAPIを使った弊害です。Leopardでもちょこっとだけランタイムに手が加えられました。こいつはあるオブジェクトに対してキー付きで任意のオブジェクトをひも付けすることができるもので、ランタイム関数を使うことで簡単に扱えます。取り出せるobjc_setAssociatedObject()で、オブジェクトに他のオブジェクトをひも付ける。*なので別にNSStringじゃなきゃいけないとかいうわけではありません。4つ目の引数はオブジェクトの扱い方。ここではOBJC_ASSOCIATION_RETAINを渡しているので、ひも付けたオブジェクトはretainされる(はず)。取り出すときはobjc_getAssociatedObject()を使う。元のオブジェクトとキーを渡すことでひも付けたオブジェクトを得られます。ちなみにobjc_removeAssociatedObjects()なんてのもあって、オブジェクトのひも付けを解除できます。Objectが役立つかというと、カテゴリで既存のクラスを拡張する時。Objectが役に立つはず。Objectsのように参考になるエントリがいくつかあります。Leopardでは、C/C++/Objective-Cでブロック構文が使えるようになりました。Dispatchとともに語られることが多いようですが、GCD専用とかいうわけでは全然なくて、汎用的な無名関数とかラムダみたいな感じで簡単に使えます。enumerateLinesUsingBlock:といったように、ブロックを引数として取るようなメソッドがいくつか追加されています。メソッドだけでなく新しいクラスも登場していて、NSBlockOperationのようにブロックを用いてNSInvocationOperationと同じようなことができるクラスも追加されています。Leopardですが、その中でちょっと嬉しいけど地味な新機能としてテキストの自動置換機能があります。正式名称はなんていうのか知りませんが、システム環境設定→言語とテキスト→テキストで設定できるアレです。テキストエディットとかでは使えるんですが、サードパーティのアプリはそれぞれが対応する必要があります。setAutomaticTextReplacementEnabled:YESを送ってやるだけです。Leopardで新たに登場したもので、その名の通り自動置換を行うかどうかをセットするためのものです。Replacement"にチェックをいれても変更できます。Leopardでは他にもテキスト周りの新機能(スペルの自動修正とか)があり、それに関するメソッドがNSTextViewに追加されています。追加されたメソッドの一覧がADCで見られます。