メモリ管理の難しさは、自分が設計する部分じゃなくて、
ライブラリとか他人が作ったもののに受け渡すところが
難しいようですね。
渡した先でretainされるのかどうか? っていのと、
どのタイミングでreleaseが送られるのか? ってあたりですかね。
ちゃんと時間作ってよく調べてみないとな。
多分現状だとメモリがダダ漏れ状態と思う;
プログラミングのことを書くぞ。I'm gonna write programming-related topics here.
メモリ管理の難しさは、自分が設計する部分じゃなくて、
ライブラリとか他人が作ったもののに受け渡すところが
難しいようですね。
渡した先でretainされるのかどうか? っていのと、
どのタイミングでreleaseが送られるのか? ってあたりですかね。
ちゃんと時間作ってよく調べてみないとな。
多分現状だとメモリがダダ漏れ状態と思う;
cocos2dで別のシーンに移るときは、もろもろdeallocされるのだけど
加速度センサのdelegateは存続するので放っておくと
クラッシュするわけですね。
シミュレータだと動いてたのがデバイスで突然動かなくなったから
何事かと思ったですよ。
ちゃんと
[UIAccelerometer sharedAccelerometer].delegate = nil;
とかしておかないといけないのね。
ちょっとInterface Builderとの付き合い方が分かってきた。
ひとまずviewを作るときは
新規 xib を直接作るんじゃなくて、新規 UIViewController Subclass を作ってそこでついでに xib を作ると良いのだな。
xib とアウトレット・アクションの結びつけも、無理してIB備え付けの機能を使わなくても viewControllerの方から手動でいろいろできるってわけだ。
このへんはエリカ本のおかげでだいぶ助かったな〜
実はここまで Interface Builder を使っての作業を避けてきたのだけど、いよいよ対峙せざるを得ない・・・。
最初から全部 IB で作るアプリは参考書を見ればできるんだろうけど、途中から部分的に UIView を使おうとしたりするとかなりドツボ・・・。なんでこんな全体像が掴めないんだ。頭悪いのかオレ・・・。
しかし、なんで XCode と Interface Builder の関係ってこんなにモヤッとしてるの?
素人的に考えると、UIをグラフィカルに設計したあかつきには、
IBOutlet* piyopiyo .... みたいなアウトレット宣言が並んだ .h と、あと、viewDidLoad みたいな基本動作のひな形が並んだ .m が同時に作成されて、それをインポートしたらすぐ使える、みたいなのをイメージするのだけど、なんか妙に M-V-C 設計を押しつけられてるせいかストレートに行かない。
把握してしまえば難しくないんだろうけど、自分の中に無い考え方で設計されてるツールを使うのって本当に苦痛・・・。
お恥ずかしながら、やっと少しずつC++が分かるようになってきました;
少し分かるようになって思うのは、やはりC++は覚えることが多くてややこしい!!
ひとつひとつは覚えてしまえば何ということもない話が多いのだけど、ベンダー提供のテンプレに付け足して行くような開発の場合、テンプレを使いこなすためには、いろいろな工夫が施されたソイツを読み解かなきゃいけなくて、そうなるとC++の細かい規則なんかがまとめて襲いかかってくるから本当にツライ;
その点ではObjective-Cの割り切り具合はすごいなー。
特に助かったのは、オブジェクトはすべてポインタ扱い、メソッドはすべてvirtual相当という点。これでだいぶ覚えるべき話が減っていると思う。
メモリをallocしながら実行させる要領もだいぶ身についた気がするし。
引数の役目がすべて明示されている あの角カッコオブジェクト式の説明臭さも手伝って、すごく慣れるのがラクだった。
オブジェクト指向全般や動的プログラミングの入門にObjective-Cはけっこういいかもしれんですよ。
XCodeのあるバージョンから AU Synth のテンプレートが追加されたのはいいのだけど、このテンプレートが微妙にイマイチなんだよなあ。
一番アレだなあと思ったのが、発音タイミングがフレーム単位じゃなくてスライス単位で制御するようになっていて、それを改造するのにけっこう知識も手間も必要だったり。
ピッチベンドの制御もそんな塩梅になってる。
あとポリフォニック仕様にガッチリ組まれてるから、モノフォニックシンセを作ろうと思うとかなり大がかりな組み直しをしないといかんのよねえ。
Ad Hoc distributionが失敗した理由は、
Debug構成を元にターゲット構成を変更していたからだった。
これは凡ミスだよなぁ・・・。
配布するんだからDebugじゃダメだわさ。
でもiPhoneSDK初心者には難しいッス;
ひとまずRelease構成を元に各種設定を変更したら
うまくいきました。よかった。
最近開発関係は休んでいたのだが久々にiPhoneの方を再開。
しばらくチェックしてない間にiPhone関係の書籍増えたねえ。
・・・というわけで数冊購入して知識収集。
■iPhone Core Audioプログラミング(永野 哲久)
オーディオ関係は、単純なプレイバックの話を扱っているものは多かったけど、低レベルのバッファ操作とかはまったく謎だったのでその辺解説してくれてて助かる。
■OpenGLで作るiPhone SDKゲームプログラミング(横江 宗太)
やっぱゲームならOpenGLだべさ・・・と思ってもなかなかiPhoneに特化したOpenGL解説って無かったのでこれまた助かる。
■The iPhone Developer's Cookbook: Building Applications with the iPhone 3.0 SDK (2nd Edition) (Erica Sadun)
In-App PurchaseとかP2P通信とかその他もろもろ幅広く扱ってて、かつ各所で評判が良かったっぽいので購入。訳本も出ていたが、カッコつけて原書で。(訳がひどいという評判もあったし)
どの本もサンプル豊富なんで、まずはサンプルの改造から初めてみますかね〜
Ad HocビルドでiPhoneアプリを他の人のiPhoneに転送してテスト、
というのをやってみたんだが
・・・・動かん;
手順が多すぎてどこで間違えたか追跡しきれん;
またちょっとiPhoneアプリの方が保留になりそうだから
忘れないうちにいろいろメモしておきたいのだが
後で思い出して書くというのはなかなか難しいなぁ。
でも思い出したらまた自分用メモを書こう。