Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Matzにっき(2005-03-04)
[go: Go Back, main page]

«前の日記(2005-03-03) 最新 次の日記(2005-03-05)» 編集

Matzにっき

<< 2005/03/ 1 1. 就職活動
2. NPO法人や神戸情報大学院大学がオープンソースのイベント,MySQL創業者やZope CEOが来日講演
3. 「日本企業はCOBOL資産を利用し続けるべき」と英マイクロフォーカス社長
4. FLOSS-JP オープンソース / フリーソフトウェア開発者 オンライン調査日本版
5. 「ソフトウェア特許は弊害をもたらす」、MySQLのマーティン・ミコスCEO
6. FAQ based Web site
2 1. iPodショックから日本企業は何を学ぶのか
2. カールとターボリナックスがリッチ・クライアントソリューションで提携
3. The Internet Company − Special Offer for Ruby Users
4. ピアノの移動
5. Computer History Museumに見る小型化の歴史(その1)
6. 効果的なリリースの仕方
7. JSON: The Fat-Free Alternative to XML
3 1. 初節句
2. ブラウザ特許訴訟、控訴審でMicrosoftが逆転勝利
3. オープンソース・イニシアティブ、ライセンス急増への対策を提案
4. IBM、オープンソース支援策を発表--学生の求職やスキル習得をサポート
5. 論文書きにおける悲劇のサイクル
4 1. Category in Objective-C
2. お葬式
5 1. オープンソースカンパニーユヒーロ再び
2. IT業界に根付く神戸情報大学院大のオープンソースカリキュラムとは
3. EUのソフト特許法案、7日の閣僚会議で承認へ
4. 「サマータイム」がやってくる!?
5. 情報処理学会第67回全国大会 - 情報の検索・抽出最先端
6. SAJAX - Simple AJAX Toolkit
7. Dynamic Languages Symposium
8. 寒さとお祭り
6 1. 松江
2. Matsue Ruby Meetup Group
7 1. Span
2. Pugs
3. 韓国で有名な日本人
8 1. The Nice programming language
2. Eleven
3. Meetup for The Matsue Ruby Meetup Group
4. 出会え系
9 1. Eleven続き
2. Meetup Group Meeting レポート
3. Ruby 2.0 ブロックローカル変数
10 1. Rast ファーストリリース
2. The Power of Blocks in Ruby is accepted
3. FOSS企業を成功に導く7つのヒント
4. 思いつき
5. 「Regarding Ruby (and Ruby on Rails)」または初心者向け言語の落とし穴
11 1. ハネムーンナンバー
2. こんなにあったUI特許--ジャスト-松下裁判で浮かび上がる課題
3. Colorization Using Optimization
4. ITmediaニュース:先願主義を導入すべき-MS弁護士、特許法改正を訴える
5. アマゾン、「女の子にはピンクの包装紙」を提案するシステムで特許取得 - CNET Japan
12 1. 新見
2. 言い訳
13 1. 新見(2日目)
14 1. 体調不良
2. MM!
3. RubyURL.com in a hour...
15 1. 確定申告
2. キムチの作り方
3. 抗菌コンピュータ
4. 特許庁にビジネスモデル申請 - 内部告発システム開発で泰希堂
16 1. 続・言い訳
17 1. 米Yahoo!、架空の「テクノロジー予測株式市場」を開設
18 1. 卒業式
19 1. Undergraduation
2. Sun、動的言語を支援する「Coyote」プロジェクト
3. ParenScript
20 1. 岡山
21 1. Java vs Ruby (or RIFE vs Rails)
22 1. CC-Wikiライセンス
2. The State of the Scripting Universe
23 1. 地球の壊し方
2. Ruby Conference 2005
24 1. Five Things You Didn't Know You Could Do with Ruby
2. コードがドキュメントだ
25 1. The Pragmatic Studio
2. UnderC
3. Selenium
26 1. 『巌窟王』と思い出
2. オープンソースソフトは時限爆弾 -- MS出資のシンクタンクが批判
3. 「RPGツクール XP」東京工科大学の授業用教材として採用
4. 企業で真価を発揮するP言語 -- Burton Group報告
5. Writing a simple Ruby evaluator
6. The Guerrilla Guide to Interviewing
7. OSC 2005 セッション「Ruby Hot Topics」
27 1. 出雲
28 1. 就活デー
2. FSF:「GPL第3版でフリーソフトプロジェクトが分割することはない」
3. IT資本論 観光と文化資本クラスター
29 1. 山口へ
2. 一時間で覚える Ruby
30 1. 遊ぶ子供たち
2. 日本通信 B-MOBILE
31 1. Five-minute Multimethods in Python
2. 住商情報システム、VAリナックス子会社化でオープンソース分野を強化
3. ヒューメント、Firebirdの有料サポートサービスを開始
4. 松江市玉湯町
>>
Dr.Web 予測するアンチウイルス  Linux・FreeBSD・主要MTAに対応。まずは2ヶ月間無料でお試し。

2005-03-04 [長年日記]

_ [言語] Category in Objective-C

どうやらObjective-Cの「カテゴリ」と呼ばれる機能が、 以前から悩んでいたselector namespaceに近いもののようだ。 基本的な概念は理解できるものの、実際の挙動(と実装)がイメージできず苦しんでいたので、 参考にできるものがあるのはありがたい。

しかし、ちょっとGoogleしてみた範囲内では、その仕様はよくわからなかった。 具体的な挙動や実装について参考になる資料はないものだろうか。

あれ? まてよ。

今、改めてGoogleしたページを読み返すと、別に有効範囲が静的スコープであるとは書いてないな。 そうするともしかしてカテゴリってのは、ただ単に「インスタンス変数が追加できないMix-in」なのか。 それだったらすっごい残念なのだが。

selector namespaceのある言語といえば、他にSmallscript (S#)JavaScript (EcmaScript 4.0)などもあるが、 いずれも現時点で私には理解できていない。

情報提供歓迎。

_ お葬式

知人のお母さんが亡くなった、ということで、教会でのお葬式(偲ぶ会)に参加する。

私は故人とは面識はないが、人々に愛されていたことがよく分かる会であった。 簡素ながらも思いやりが感じられる良い会であったと思う。

父と同じ68歳。早すぎる死という印象もないではない。 彼女の霊が安からんことを。

本日のツッコミ(全2件) [ツッコミを入れる]
_ AC (2005-03-06 00:53)

カテゴリの特徴はこんな感じです。
・インスタンス変数は追加できない
・スーパークラスのメソッドでも実行時にオーバーライドできてサブクラスはそれに従う
 なのでインスタンス側にメソッドが属してるわけじゃない。例えばルートクラスのhashとかをいじると、サブクラスでオーバーライドがなければ全部それになる。
・カテゴリ名の衝突はソースレベルでしか回避できない
・元のメソッドを参照する方法は(なんらかの形で関数ポインタを保持とかしない限り)ない
・カテゴリがロードされるときはカテゴリ内の+loadが呼ばれる

機能的にはクラス階層の根っこの方に無理やりパッチを当てたりできますが、大体はインターフェースを分類して機能単位で整理する場合がほとんどです(一応Cなのでプロトタイプがないとうるさいし、構造体はオブジェクトじゃないから明示しないとダメ)。いわゆるプロトコルとかインターフェースと違って実装必須要求をださないのでオプショナルなプロトコル定義にも使います。

_ まつもと (2005-03-06 01:05)

情報ありがとうございます。
やっぱりselector namespaceとは違うもののようですね。残念。
しかし、参考にはなりました。

お名前:
E-mail:
コメント:
本日のリンク元
検索

RSS feed meter for http://www.rubyist.net/~matz/ Creative Commons License This work is licensed under a Creative Commons License.