|
HMDT - Back Number / November, 2002 |
November, 2002
Cocoa 1001、またまたいろいろと。 NSBundle NSPanel InterfaceBuilder 最近は、自分でプログラムを書いていて、ちょっと分からないことがあって調べたら Cocoa 1001 に書き込むようになってしまった。知ってればどってことないんだけど、初めて使う API だったりすると、そいつを探すのが一苦労で、使い方を理解するのにまた苦労って感じなんだよね。だから、忘れないうちにすぐ書き込むようにしてる。基本的には自分のため。もし誰かの役に立てば、それはとてもうれしい。ぐらいのスタンス。
えっと、InterfaceBuilder だけど、まずウィンドウの上にボタンを配置するでしょ。それを Option を押しながら広げるでしょ。そうすると、NSMatrix ができあがるよね?それを選択して、ScrollView の subview にしてやる。こうすると、上から順に NSScrollView / NSMatrix / NSButton っていう感じになってるはずだ。 で、ここまで出来上がったら、NSMatrix の target を設定してやる。そうすると、、、あれ?ひっぱってこれねーぞ。Ctrl 押しながら NSMatrix から引っ張っても、あの線が出てこないー。いろいろ試したけど、この状態になるとできない。正解は NSScrollView の subivew にする前に設定してやること。それしか回避する方法が見つからなかったぞ。 これって、GUI の表示から直接引っ張ってやるしか、関係づける方法がないから問題になるんじゃないの?それはそれで、直感的ですごくわかりやすくて好きなんだけど、階層表示から関連づけれてもいいと思うぞ。 あと話変わるけど、前日の JavaOne の話って、ずっと前の話だったんだね。ださ。 追記: すんません。階層表示でできました。InterfaceBuilder で階層表示にしてやって、左側の名前のラベルから Ctrl + drag してやればよかったのね。右側の三角のところからやってたよ。site-aro さん Thanks!
Sun Developer News の JavaOne での Apple Java プロダクトマネージャーへのインタビューが面白いです。インタビュアーが、「Mac OS X の Java について、あまりにも知られていない」って発言してるけど、まさにその通り。この人、Sun Developer News の編集の人?みたいだけど、質問内容から見てかなり Mac OS X の Java を使い込んでるよう。 個人的には、Mac OS X の Java の強みは、すべてのクライアントに Java VM が搭載されていることだと思う。Pure Java アプリケーション開発者から見れば、とってもおいしい市場だと思うんだけど。ちょっと手を加えて Aqua 対応してやれば、喜んで使うユーザはいっぱいいると思うんだけど、ねぇ。
CoreFoudnation の秘密、可変長の CFString、つまり CFMutableString を作るときの話。 今回の話はけっこう簡単。
前回に引き続き、CoreFoudnation の秘密 のCFString の作成の話。きょうは固定長の文字列を作るときの話だ。だんだん核心(何の?)に近付いてきた。 ちなみに、今回フローチャートを書くときに OmniGraffle を使ってみた。これ使いやすいよ!シンプルで、パワフルで、細かいとこまで気が使われている。Mac OS X 時代の GUI の 1 つの指標になるんじゃないかな。この使いやすさを体験したら、Visio の使い勝手の悪さが目に付いてしょーがない。
きのう掲示板作りましたが、書き込んでくれたみなさん、ありがとうです。とっても励みになります。 さて、きょうはCoreFoudnation の秘密の話っす。すっかりペースが落ちてますな。今回は、定数文字列の作り方。 CFSTR("String") っていう感じで CFString の定数文字列が作れるんだけど、その内部の話。実はキャッシュしているんで、同じ文字列を作るならば効率化されてるんだよ、ってことが書かれています。
とーとつですが、いまさらですが、掲示板作ってみました。HMDT BBS です。てっとり早くレンタル掲示板使いました。掲示板作るの初めてなんで、てきとーにやってみようと思います。 基本的に Mac OS X プログラミングの話題を取り扱います。でも、プログラミング全般でもオッケーです。初心者質問歓迎です。HMDT 本体への突っ込みも OK です。 ま、ちょっとのぞいみてやって下さい。
Cocoa 1001、また小ネタをいろいろと。 NSNumber Misc. Method これも前回の thumb さんのコードを参考にしました。Thanks。他の人の書いたコードを読むのは楽しいです。自分では気付かないテクニックとかあるし。Cocoa 1001 が、そのための備忘録になっているな。
前に作って放っておいた、Project Builder のプロジェクトファイルと Interface Builder の .nib をのぞく PB IB Viewer。.nib の GUI のレイアウト情報が入っている objects.nib の中身が分からなかったという、いちばん肝心のことができない状態でしたが、なんと thumb さんが「こうすればできるぜ」と、ソースを送ってくれました。素晴らしい!Thanks! というわけで、アップデートしました PB IB Viewer 0.3。.nib の objects.nib の構造を見ることができます。まだ keyedobjects.nib が見れないとかいろいろあるので、もう少しバージョンアップします、そのうち。 Download
CoreFoudnation の秘密の話だよー。CFString の構造体は果たしてどうなっているのか。 構造体の仕組みは、よくいえば効率的。悪く言えばきれいじゃない。効率優先だからいいのか。でももうちょっとすっきりならんのかね。
たしか、数カ月前だったと思うけど、Apple が "FireWire Reference Platform" っていうソースコードを公開したでしょ。調べたら 8/8 だった。ちょっと、興味があったからダウンロードしてみたんだ。 そしたら「きれい」なんだよね。ソースコードが。ドキュメントもきちんとあるし、ビルド環境も整っているけど、なによりソースコードがきれい。読んでみてもすらすら読める。適切なコメントがあって、名前が分かりやすくて、字下げもきちんとしてるし。ま、当たり前のことなんだけど。 なんでかな?と、少し考えてみると、理由は簡単。API の切り方に無理がなくて、モジュールの構成が素直だから。API の名前見ただけで、機能と実装が想像できるし。きれいなソースコード見ると心が落ち着くし。やるな、Zayante。Apple じゃないところろがミソ。 あ、でもこれちょっと機能少なめかも。プロトコルを実装しただけで、実際に使ってみるとアプリケーション側でいろいろ呼び出してやらないといけない、という印象が。 ちなみに実装されているプロトコルは、AV/C の disc、tape、panel、async connections、あと IP over 1394、PPDT、SBP-2 の target、initiator ってとこ。必要なものだいたいあるけど、Isochronous 系の管理とかどうなってんだろ。あ、あと暗号ないや。
なんか、あっちいったりこっちいったりで申し訳ないんだけど、エンコードをいろいろ見ていたら、やっぱり String 関係の実装を知らないと話にならない、と思ったので、CFString の話をやります。つーわけで、CoreFoudnation の秘密、CFString 編。 CFString がターゲットにしているのは、一言で言うと、「8 bit か 16 bit の配列(混在可)で、固定長か可変長で、長さ情報が埋め込まれているかもしれなくて、内部か外部にバッファがある」文字列。むう。単純じゃない。つーか複雑すぎる。せめて Pascal 文字列ぐらいは切り捨てたいとこだけど、そうもいかんのだよな。
Cocoa 1001、いろいろと小ネタ大ネタ取り混ぜて。 NSTableColumn NSOutlineView Misc. 気になっていたものをとりあえず書いてみた、って感じか。
Cocoa 1001、Cocoa の NSString のエンコーディングを利用して、日本語コードの自動判別をする、っていう話だ。それには NSCharacterSet も使ってやる。 Cocoa で日本語 これでとりあえずはコードの自動判別ができるけど、ちょっと荒っぽい。もう少し調整する予定。 (追記)少し書き直しました。サンプルにも修正を加えました。
Cocoa 1001、ちょっとだけ NSDocumentController の話。 AppKit / NSDocumentController
Cocoa 1001、新しいサブカテゴリを追加したのだ。「Cocoa で日本語」というタイトルで、Cocoa を使って日本語を取り扱う際に注意することを集めるぜ。で、まずは NSData と NSString の話。 Cocoa で日本語 - エンコードを指定して、NSData <-> NSString を変換する NSData と NSString とエンコーディングのお話。
|
|
Home | Link | Download | Back Number | Speciall Issue
|