XCodeのBreakpointの使い方

 プログラミング  Comments Off on XCodeのBreakpointの使い方
Feb 182012
 

XCodeでNSLogの代わりにブレークポイント(Breakpoints)を使う時の簡単なまとめ。Log messageを出す時には@exp@をどう使うか。Debugger Commandではgdbのコマンドを利用する。

コンソール出力

ブレークポイントのヒット回数を利用する

ブレークポイント設定をしたプログラムの書かれた行が何回呼び出されたか出力する。(例えば、以下ではTableCellの生成が何回呼ばれたかを調べている)

※OptionsのAutomatically continue after evaluating actionのチェックをONにするとブレークポイントに差し掛かっても出力をこなしながら、そのまま続行させることができる。

@exp@を利用する

以下ではTableCellに利用する文字列の中身を調べている。戻り値には型を付ける事が必要。

@(NSpoint)[obj location]@

@(bool)[str isEqualToString:@”xcode”]@

@(const char*)[obj title]@

@(float)[num floatValue]@

gdbコマンドの一部

ブレークポイントを設定するコマンド(break)

main.mの10行目で止めたい。

break main.m:10

DataManagerのinitWithTitle:メソッドで止めたい

break -[DataManager initWithTitle:]

変数が変化するとプログラムが停止するコマンド(watch)

1. title変数が変化したら止めたい

watch title

2. objのprop変数をデバッガ出力表示したい

p [obj prop];

3. selfのtimestampオブジェクトをデバッガ出力表示したい(オブジェクトである点に注意)

po [self timestamp]

条件

「一行目だったら、画面が開いていたら、アニメーションしてたら等」変数の条件にあわせたブレークポイントの設定方法。慣れると便利なブレークポイントでは、ドットシンタックスは使えない点、戻り値の型を明示的に与える点は注意が必要。

indexPath.row==50ではなく、(NSUInteger)[indexPath row]==50

以下のようにNSLogでソースを汚す必要も無い。

if(indexPath.row==50){
NSLog(@"%.2f, %.2f", point.x, point.y);
}

参考サイト

http://theocacao.com/downloads/DebuggingWithXcode.pdf

http://stackoverflow.com/questions/4797128/xcode-debugger-value-of-expression

http://cocoawithlove.com/2008/10/debugging-tips-for-objective-c.html

 Posted by at 02:39

iOSのマルチタスクバーは最近使用したアプリの一覧

 プログラミング  Comments Off on iOSのマルチタスクバーは最近使用したアプリの一覧
Feb 022012
 

マルチタスクバー(ホームボタンを2回押すと出る一覧)に表示されるのは最近使用したアプリの一覧である。マルチタスクバーにアプリが残っている時は消さないと「裏で起動(動作)したままになっている」という考え方は間違い。Appleサポートの記述を理解していない又は誤解しているジーニアスバーのスタッフもいるとのこと。

「iOSのマルチタスクバーに表示されているのは最近利用されたアプリの一覧であり、現在稼働中のアプリ一覧ではない(稼働しているものもあるが稼働していないものもある)」

iOS開発のデバッグ専門の業者のレポートですらiOSのマルチタスクを誤解していることがあった。マルチタスキングを使用しない設定(Application does not run in background(UIApplicationExitsOnSuspend=YES))をしたiOSアプリがマルチタスクバー(最近使用したアプリ一覧)に残るのはごく当然のことと言える。

マルチタスクバーという言い回しも情報源により曖昧で、

Appleサポートの「マルチタスク機能を理解する」では、「マルチタスクバー」ではなく「最近使用したApp」と表現している。

iPhone電源投入直後に何十個というアプリがマルチタスクバーに表示されるのは(最近使用したアプリ一覧であることから)当然で、これらが稼働中とは限らないアプリの一覧である。

UIApplicationExitsOnSuspend

アプリ起動中の状態遷移は次のようになる。

ホームボタンを押した時の状態遷移(UIApplicationExitsOnSuspend=NO)

Active > Inactive > Background > Suspended

ホームボタンを押した時の状態遷移(UIApplicationExitsOnSuspend=YES)

Active > Inactive > Background > Suspended > Not running

画像はAppleからの引用(© 2012 Apple Inc. All Rights Reserved.)

以下参考サイト

http://www.apptoiphone.com/2012/01/ios.html

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

 Posted by at 14:20