Lipsで書くと、こんな感じ。
カッコの数があっているのか心配になる。
Prologで書くとこんな感じ。
分かりやすい。ステキ☆
Haskellで書いてみる。
やっぱりこのあたりはHaskellが一番きれいかも。分かりやすいし。
Javaで書いてみる。
この程度のことでも色々書かなくちゃ行けない辺りが面倒。
2011年10月28日金曜日
2011年10月27日木曜日
Objective-C... メモリ管理
処理 | iOSのフレームワーク | Mac OS Xのフレームワーク |
---|---|---|
データ処理 | Foundation | Foundation |
グラフィック処理 ユーザインタフェース処理 | UIKit | AppKit |
マルチメディア処理 | AV Foundation, Media Player | AppKitの一部、QTKitなど |
オブジェクトの生成と削除
オブジェクトはRetain Countが0になった時に削除される。オブジェクトの作成時には、Retain Countは1で初期化されている。
<普通のオブジェクト>
通常のオブジェクトは、メソッド終了時に自動的に破棄される。
イベントの発生によりメソッドが実行される場合、メソッド実行の直前にAutorelease Poolが作られ、メソッドが実行されている間に作成されたオブジェクトの管理を行う。メソッドが終了する直前にAutorelease Poolは削除されるが、その中で管理されていたオブジェクトに対して一斉にreleaseメソッドが送られる。これによりRetain Countが0になるため、オブジェクトは削除され、メモリが解放される。
<明示的に管理する場合>
retainをオブジェクトに対して実行すると、保持カウントが+1される。
この場合は、Autorelease Poolで管理されていても、Autorelease Pool削除時のreleaseにより保持カウントが0にならないので、オブジェクトは削除されない。
イベント処理が終了した後でも使用したいオブジェクトに対しては、retainを呼び出しておく。
この場合は、オブジェクトが不要になった時点で明示的にreleaseを送り、保持カウントを減らす必要がある。
< Autorelease Poolで管理されないオブジェクト >
- alloc, newという文字列を名前の先頭にもつメソッド
- copyという文字列を名前に含むメソッド
- 明示的にreleaseする
- autoreleaseメッセージを送っておく(AutoreleasePoolの管理に入る)
< allocの注意 >
allocでオブジェクトを作る時は、initから始まる初期化メソッドを呼び出すことが必要。
オブジェクトの生成(メモリの確保)は行うが、初期化を行わないため。
ラベル:
Objective-C,
SoftwareDesign
2011年10月5日水曜日
Linuxキーマップの設定
ThinkPadのキー配列がUSな関係で、キーマップの設定が必要になることがある。
VMWare上のCentOSでキーマップが違ったので直した。
よく忘れるのでメモ。
RedHat系:ファイルは/etc/sysconfig/keyboard
JPの場合
debian
JPの場合
VMWare上のCentOSでキーマップが違ったので直した。
よく忘れるのでメモ。
JPの場合
KEYBOARDTYPE="pc" KEYTABLE="jp106"USの場合
KEYBOARDTYPE="pc" KEYTABLE="us"
JPの場合
# cp /usr/share/keymap/i386/qwerty/jp106.kmap.gz /etc/console/boottime.kmap.gzUSの場合
# cp /usr/share/keymap/i386/qwerty/us.kmap.gz /etc/console/boottime.kmap.gz
登録:
投稿 (Atom)