フイルタじゃない

MacDev

Mac Apps + Japanese に「母音がウの文字に続くイは大文字」なんて書いたけど、“フィルタ”は違うな。どう書けばいいんだろう。

Mac Apps + Japanese

MacDev

早速、DocumentsMac Apps + Japanese のページを追加。
これは以前から作ろうと思っていた、Mac アプリケーションの日本語化に関する文書だ。

ユーザは気にしなくてもいいけど、アプリケーションを提供する側に立つ人は細かい部分までこだわるべきだと思う。

(あまり気にしない開発者が多いのか、iOS アプリケーションの日本語表記はひどすぎるので自分は iOS デバイスをすべて英語環境にして使っている。)

ちょっとした疑問

MacDev

Dock.app は Dock のほかに Dashboard や Mission Control、Launchpad、スタック表示、デスクトップ背景など含んでいるのになんでこんなにメモリ消費が少ないんだろう。

まだ情報が足りない

MacDev

iOS SDK と一体化しているせいで Mac 開発者はしばらく触ることのできなかった Xcode 4.2。Objective-C 新機能の Automatic Reference Counting (ARC) が気になっていたのだ。

やっとリリースされたので、自作フレームワークを ARC に対応させるために調査中。

オブジェクトを retain しない辞書として使っていた NSMapTable だけど、Class Reference によると

Important: NSMapTable does not support weak references under Automatic Reference Counting (ARC).

ARC 環境での weak 参照はサポートされないとのこと。NSPointerArray や NSHashTable も同じらしい。これは strong 参照されてしまうという意味なのか、これまでのように、retain はしないけど解放時の自動 nil 化はされないので解放される前に取り除いてねという意味なのか、どちらなのだろう。
C 言語の id 配列を使っていた部分もあり、対策を考えないといけない。

各 Callback を NULL にした NSArray & NSDictionary はどうなんだろう。

Hint Balloons

MacDev

ソフトを初めて触るユーザに対して使い方を説明するために、初回起動時に小さなウインドウを表示して画像で示したりドキュメントを作って Web ページ上に置いてみたりと試行錯誤してきたけど、機能を見つけてもらえなかったり「使い方がわからない」「わかりにくい」という声は消えなかった。

そこで今回は各部分ごとに吹き出しを表示し、指示された内容を実際にユーザが試すと消えて次の吹き出しが現れるという、一種のチュートリアルのような方法を採用しようと考えている。ゲームなどでも見かけるやり方だ。

ぬわっ

MacDev

Core Graphics / Core Image のサンプル CIBevelSample、最も精神的にくるサンプルだ。

UITableView もどきのデモ

MacDev

数日前、Thunderbolt を搭載した新 MacBook Pro の発表の直後に、Lion の詳細 & Developer Preview 版が突然公開された。

その頃自分は、Mac 上で動き、UITableView のように手軽に使え、CALayer を表示に使い、セルを効率よく再利用して、行数が増えても表示が軽いテーブルビューを作るため、実装を進めていた。

Mail.app のスクリーンショットや Twitter での数人の発言から、Lion では NSTableView が UITableView の良さを取り入れて生まれ変わっていることが予想でき、作る必要はなかったみたい。それでも、何千個にもなるセルの効率のいい位置計算方法を考えたり、いろいろと勉強になった。

(↑見た目から、何に使うために作っていたのかわかるはず...)

まだ未完成だけど、デモのためのアプリケーションを作ったのでここに置いておく。(Snow Leopard でのみ動作確認。使用は自己責任で。)

セクションと行の数は起動するたびに変わる。

画面からはみ出たセルが消え、見える範囲に入った部分のセルとして再利用される様子がよくわかるので、こういうビューを作るときの参考になるかも。(右矢印キーを押して右カラムにいくと "Clip views" チェックボックスがある。)

iOS っぽいスクロールバーは Lion の挙動を予想したもの。カーソルを乗せると背景が現れるのは予想が正しかったみたい

2011.2.28 追記

PXListView というものを発見。OS X 10.5 以降に対応しているみたい。ソースも公開されている。

-reloadData が呼ばれたとき、delegate の -listView:heightOfRow: をすべての行に対して呼び出し、行の高さではなく y = 0 からの絶対量をキャッシュするようになっているみたい。自分も同じような手法を使った。