2010年05月26日

iPhoneでunrecognized selector sent to instanceとか出た場合

iPhone開発をしていて、unrecognized selector sent to instanceとかのエラーが出た場合どの辺でエラーが出ているかを見たい場合のやり方。

とりあえずShift+Command+rでデバッガコンソールを出す。

2010-05-26 10:20:20.753 TestApp[287:207] Stack: (
34178139,
2464941321,
34560059,
34129526,
33982146,
52743,
14232,
29139512,
29122615,
29105657,
28957710,
15097,
2843653,
4757409,
2843653,
3251022,
3259759,
3254971,
2948575,
2856904,
2883681,
41467225,
33962880,
33958984,
41461269,
41461466,
2887599,
10760,
10614
)

とか数値の羅列が出てるので、同コンソール上で

(gdb)list *52743

と打つ。

この数値のリストは例外で飛ぶ前のスタックフレームの10進数表示らしい。
上から順に見て行き、数値の変動が大きく変わる所がユーザーコードとライブラリの分岐点辺り…と言う事らしい。
間違えたら他リストにある数値で試していく。

以上。
ラベル:iPhone デバグ
posted by 1.618 at 10:33| Comment(0) | iPhone | このブログの読者になる | 更新情報をチェックする

2010年05月20日

iPhone SQLite3 ラッパークラス FMDBでのエラー

現在iPhoneでsqliteの使い方を勉強してる。

…といってもSQLはうんざりする程使った経験があるのでラッパークラスであるFMDBを使用してプログラミングをしている。

で、ご多分に漏れずエラーが出てハマった…orz

サンプルソースを見ながら色々と弄ってたのだが、どうしても[db close]した直後に堕ちる

ちゃんとFMResultSetもcloseしてdbだってcloseしてるのに…理不尽!

どうもEXC_BAD_ACCESSで堕ちてるみたいだが、このエラー、全く意味不明なエラーなので意味が無い。ただ、分かるのはメモリー関連でエラーが出てる事くらいorz

一行ずつこぴぺを繰り返してたら、どうもBobデータのインサートらへんでおかしい事が分かった。

NSData *binImg = UIImageJPEGRepresentation(img, 0.8);
[db beginTransaction];
[db executeUpdate:@"insert into test (image) values (?)", binImg];
[db commit];

[binImg release];
[img release];

上記でNSDataをreleaseしているが、これをやるとどうも堕ちるっぽい。
コメントアウトしたらうまく行った。orz
うーむ…Cはよくわからんので説明がつかない…
使い終わったら解放せないけんのんじゃねーのか??

ちなみに[db close]の後にreleaseしてもクラッシュする。

あと、insert, create系でexecuteQueryを使うとFMDatabase in useとか何とかいうエラーが発生する。テーブルを弄る系のクエリはexecuteUpdateを使用すること。

以上。
ラベル:sqlite iPhone
posted by 1.618 at 16:05| Comment(1) | iPhone | このブログの読者になる | 更新情報をチェックする

2010年05月19日

iPhone Objective-cでの循環参照回避方法

Objective-Cで循環参照使用すると

error: expected specifier-qualifier-list before 'MyClass'

というエラーが出る。

回避する方法は、@classディレクティブで参照するクラスを記述する

以下参照サイトより:
『相互でヘッダファイルをimportし合った場合、コンパイルエラーが発生するのだが、以下の場合を除き、他のクラスをプロパティ等で使用する場合には、必ず「@class」で使用するクラスを宣言してやるよう習慣にすることで、回避できそうだ。
・使用されるクラスがスーパークラスの場合
・使用されるクラスが外部フレームワーク内のクラスの場合』

ただ、循環参照が頻発する場合は設計自体を見直した方がいい。
ラベル:iPhone 循環参照
posted by 1.618 at 11:55| Comment(0) | iPhone | このブログの読者になる | 更新情報をチェックする

2010年05月18日

iPhone NSTimerでdouble freeエラー

口蹄疫の事ばかりかいてても仕方が無い。
で、iPhoneプログラミング。

NSTimerを解放する場合、

[arTimer invalidate];
[arTimer release];
arTimer = nil;

とやると、

malloc: *** error for object 0x15b2e0: double free

というエラーが出た。

色々調べてみると、invalidateでreleaseまでやってくれるらしい。

参考サイト
http://www.iphonedevsdk.com/forum/iphone-sdk-development/6323-nstimer-double-free.html
http://dev44100.blogspot.com/2009/11/iphone-nstimer-nstimer.html

以上。
ラベル:iPhone NSTimer
posted by 1.618 at 11:05| Comment(0) | iPhone | このブログの読者になる | 更新情報をチェックする

2010年05月11日

iPhone スクロール初期化

UIScrollView…というか、UIView全体の事だと思われる。

IBOutletの初期設定(hidden, alpha, enable, その他)はviewDidLoadで設定すること!

そうでないと反映されない。
init系のファンクションでもダメ。

…確か前にも書いたかもだが、もう一回。(汗
これで午後ずっとハマってた…orz
ラベル:iPhone UIScrollView
posted by 1.618 at 18:47| Comment(0) | iPhone | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。