ページ

2010年8月22日日曜日

参照カウントretain&releaseとpool領域を理解

いや、今更なんだけど。
むか〜し、C++などでオブジェクトのスマートポインタなどを実装したことがあったので、それに似たようなものだろうと、仕組みを詳しく理解しないまま進めていたのが仇に。
いや、前々から、なぜか自分でreleaseしなくても、勝手にメモリが解放されるオブジェクトがあったりしたので、気になっていて、そろそろ根本を理解しナイトとマズイなぁと思っていたのですが、纏まった時間が取れずに放置していました。

でも、この度、お盆休みがとれたので、ちゃんと学習してみました。

なるほどなるほど、autoreleaseとpool機能のせいだったんですね〜。
autoreleaseのオブジェクトは、所属するpoolの解放とともに一緒にreleaseされるんですね。
で、おせっかい?なことに、標準のNS*のオブジェクトで自生成系のメソッドが大抵autoreleaseであると。

いや、初めから理解していればおせっかいではなく、逆に便利だと感じるのかもしれないのですが、ちゃんとその仕組みを理解していないと、誰に消されたのか解らず嵌ります。autoreleaseなのを知らずに、文字列領域を確保しているはずだから解放しようとか思って、明示的にreleaseすると2重解放とか言われちゃいます。

自分で明示的に[[xxx alloc] init]したものは、poolと一緒にreleaseされることがないため、明示的にreleaseしないとメモりリークするのですが、[[[xxx alloc] init] autorelease]としておけば、自分で生成する場合でも纏めてpoolでポイできるんですね。
でも逆に、autoreleaseをかませたオブジェクトは、poolと一緒に破棄されるので、pool破棄後も利用するオブジェクトの場合は、参照先でのretainによる参照カウンタのアップが超重要になってきます。

理解すると単純な話。だけど、これを理解しないまま組むと、メモリリークやメモリ破壊しまくりですね。。。



「詳解Objective-C」の95ページから詳しく載っていました。。。

特にJavaやC#などで、ガーベージコレクションの楽チンさに慣れきった人は必読ですね!(笑)

牛角チャレンジ備忘録

家の近くの駅に牛角があるのですが、基本的に自炊人間なので、一度も入ったことありませんでした。

今、テレビでその牛角の食べ放題メニュー原価割れチャレンジがあり、ちょっと行きたくなってきました。

牛角の食べ放題(オーダービュッフェ)は2750円で、基本セット→食べ放題となっています。
プロレスラーが原価割れ?チャレンジ(お店が赤字になる)を行い、その結果白旗が1人あたり8〜9人前辺り(4人家族で基本セット4人前+カルビ30人前+塩キャベツ+エビ/ホタテ1人前)で上がりました。(所詮テレビなので本当に原価割れレベルかどうかは怪しいですけど・・・)

私は痩せの大食い(自炊しているのもそのせい)なのですが、10人前なら食べれるような気もする(無理かな?)ので、次に友達と外食する時にはチャレンジしてみようかと思います。

いつになるかは解りませんが、忘れないうちにメモメモ〜(笑)

2010年8月8日日曜日

iPhoneとObjective-C

慣れって凄いなぁ。
趣味で始めたサンデーiPhoneプログラマー歴も2ヶ月ちょっととなりました。
でも、週2日(週末オンリー)のペースなので、現時点で実質14日くらいかな?

最初は、Objective-Cの独特すぎる文法に、これは使いこなせないかもとか、なんでこんなMac専用の使い回せない独自の言語を習得せねばならないのだ?
いっそ必要最小限の部分だけ、Objective-Cで書いて、残りは全部CとかC++で書いてやろうかと思っていたのも今は昔。
今じゃBOOLがYES, NOだったり、関数の引数の定義が面倒だったり、idがオブジェクトのポインタ型だったりすることにも慣れました。

デバッガがまだ使いこなせていないのと、メモリの扱いについて、まだ理解しきれていない点がある感じはするものの、とりあえず、OpenGLESを使ったiPhoneアプリの開発を続けています。

やっとこ、ベースとなる自分用アプリライブラリが出来てき始めて、色々と動かせてきました。
アプリの完成目標は、とりあえず、決算後の10月くらいを目指しています。
やっぱ、お盆休みは、この作業を優先させた方が良いかなぁ。

気づいたら8月だお

毎日更新どころか2ヶ月も空いてしまったよ。
始めたばっかのブログにコメント書いてくださったお優しい方、誠に申し訳ありません。。。
6月末にプロジェクトで開発していたシステムが無事リリースし、なんか真っ白に燃え尽きた感じの今日この頃。
1年半ですもんね〜。前前職でパッケージ製品の開発をしていた時でも最大、1年くらいのスパンだったから、本当に長く感じました。
今回は色んなことを学んだですよ(第三者的に)。なんていうか、これだけで本を1冊書けるかもしれぬ。
久しぶりにプロジェクトリーダーっぽくないポジションでの仕事だったのですが、結構ストレス溜まっていた気がします。ストレスの原因は、なんとなくこのIT業界が抱える矛盾に起因するのかもしれませんが。
この辺の分析は、また別のページに纏めて書いていこうと思います。

さて、今日こうして久しぶりに放置していたブログを更新する理由は、やっぱり一気見アニメのことだったり。
「君に届け」を見ました。
結構面白かったです。
原作がまだ終わっていない?から、アニメもきっちり終わっていないのですが、それでもある程度の節目まで描かれていました。
先が見たいばかりに、ついでにコミックスも読んじゃいました。おお!コミックスは、もう終わってもいいくらいのとこまで描かれている。思いもかけずにスッキリしました(笑)



しかし、最近のアニメの恋愛系の中では、トラどら!のインパクトが大きくて、それを超えてくれる何かが出てくるのを期待して待っている感じ。


最近のアニメは、動き重視から話重視が多くなっていて、ラノベ好きにはおいしい展開?ですなぁ。
ラノベといえば、フルメタルパニックの新作がやっとこお目見えしそうとのこと。
あんまり間が空くものだから、前の巻の終わりを忘れちゃったよ〜ん。新刊買ったら、前巻から読み直しが必要かも。
そういえば、最近ラノベ読んでないなぁ。
お盆休みが取れたら、続きが出ている物は読んでみようかなぁ。
いやいや、纏まった時間こそサンデーiPhoneプログラムのチャンスだしなぁ。
悩むぅ・・・。