もう return UIApplicationMain で止まっても困らない! Xcodeでのデバッグ方法

Xcode4.2 エラー画面
Xcode4.2 エラー画面

Xcode4になってから、いまいちデバッグがうまくいかない理由に、止まってしまう場所が、

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

の行で止まってしまう場合が多いのがありますよね。この時に、どこで止まったのか分かるときはいいですが、いろいろな画面の中でどこで止まったか分からないときはデバッグ困りますよね。その対策法を見つけたので書いておきます。
“もう return UIApplicationMain で止まっても困らない! Xcodeでのデバッグ方法” の続きを読む

iOSアプリのアップデート時パスが変わるためファイルパス保存は注意!

追記:2012/7/16 ソースの誤記を修正しました。

よくある間違いですが、備忘のために記しておきます。iOSアプリを、AppStore経由でアップデートした場合、フォルダのアドレスが変更されます。アプリケーションフォルダの基本パスが変わる訳です。しかし、データ(Documentフォルダの内容、Libraryフォルダの内容)はアップデートの際はコピーされます。それで、アップデート前に、ファイルパスをフルパスで保存していると、アップデートのあとに、ファイルを参照しようとするときに、ファイルが見つからなくなってしまいます。その対応法について記録しておきます。

“iOSアプリのアップデート時パスが変わるためファイルパス保存は注意!” の続きを読む

Xcode 4.2 で、iOS 3、iOS4のシミュレータを追加する方法

今まで気付いていなかったのか、存在しなかったのか分かりませんが、これによって、テストが実機無くてもある程度出来るようになりますね。

More Simuratorを選択
More Simuratorを選択

More Simuratorというのがあったんですね。
シミュレータをインストール
シミュレータをインストール

  • iOS4.3
  • iOS4.0-4.1
  • iOS3系

と充実しているので、ここからインストール。まだインストール中なので実験していませんが、これで動くはずですよね。

[iOS]リリースビルドでのみクラッシュする状況への対処について

昨日、作成の協力をしていたアプリが、リリースされました。
細川茂樹のアプリマガジン App
カテゴリ: エンターテインメント
価格: 無料


こちらのアプリで、アプリ内購入が成功した際に、リリースビルドでのみエラー発生してクラッシュする問題が発生しました。クラッシュした後にアプリを再起動すると、購入処理は終了しており、その後は問題なく使用することが出来ます。対処した方法について記述します。
“[iOS]リリースビルドでのみクラッシュする状況への対処について” の続きを読む

iOS CoreData を使用しながら、デバッグをする際の注意点

CoreData を使って見ているのですが、なかなか便利ですね。特に、Updateの際に、NSManagedObjectのオブジェクトのデータを書き換えるだけで、データが反映されるのはいいです。ときどき、動作がおかしいと思うことがあったので、注意点を備忘として記載しておきます。

  1. NSManagedObjectContextのセーブをする必要がある
  2. 今回のプロジェクトでは、共用のmanagedObjectを作成して、それを、

    • アプリがバックグラウンドに映る際
    • アプリが終了する際

    に保存するようにしています。これをしないと、ローカルでは変更されているように見えても、次回アプリを起動した時に、データが保存されなくなってしまいます。
    こんな感じです。

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
    [self saveContext];
    }

    - (void)applicationWillTerminate:(UIApplication *)application
    {
    // Saves changes in the application's managed object context before the application terminates.
    [self saveContext];
    }

    - (void)saveContext
    {
    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
    if (managedObjectContext != nil)
    {
    if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
    {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
    }
    }
    }

  3. デバッグ中に保存されない場合は、正しくデータの保存処理が呼ばれて呼ばれていない可能性がある
  4. これで少し迷ったのですが、デバッグ中に、Xcodeのストップボタンを押した時には、上の、

    - (void)applicationWillTerminate:(UIApplication *)application
    - (void)applicationDidEnterBackground:(UIApplication *)application

    が呼ばれないので、データが保存されません。その場合は、直前の変更が無かったことになってしまいます。

分かっていれば難しくないのですが、忘れていると、”保存されたデータが無くなった”を感じてしまうことがあったので、備忘で記録しておきます。

iOS 開発中に、アプリ内購入テストサーバに接続出来なくなった原因

本日12/29から、無事にiTunesConnectサイトのホリデー休暇も終わったのですが、こーでぃんぐしていると、
Payment Transaction END Failed: … Error Domain=SKErrorDomain Code=0 "Cannot connect to iTunes Store"
というエラーが出て、アプリ内購入に接続出来ませんでした。まだホリデーで繋がらないのかなと思ったのですが、よくよく調べてみると,原因は、

provisioning プロファイルが、正しいものを使っていなかった。

という、至極単純な理由でした。正しいプロファイルを選択して、アプリを削除して,クリーンインストールすると問題なく正しく使用出来ました。

カクカクしないアプリを作りたいiOSプログラマにオススメ!エキスパートObjective-Cプログラミング

@splhack 氏のエキスパート Objective-C プログラミング本の紙版の書籍が、ついに予約開始になりました!

わたしは、達人出版会の、PDF版ーエキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッド – 達人出版会 で読んでいますが、紙で持っておかないと気が済まない方々、また、付録もA/Bあるらしく、完全版が欲しい方は両方手にするのも良いかもしれませんね!
“カクカクしないアプリを作りたいiOSプログラマにオススメ!エキスパートObjective-Cプログラミング” の続きを読む

Xcodeが起動中にクラッシュする問題をこうやって解決しました…

Jetbrains AppCode が便利で、使っているのですが、今日、Xcode と AppCode で同時にプロジェクトを開いて、いろいろやっていると、Xcode が落ちて、何回再起動してもクラッシュするようになりました。なんとか解決したので、解決方法を共有します。
“Xcodeが起動中にクラッシュする問題をこうやって解決しました…” の続きを読む

UIImagePicker 風に複数画像選択も出来る ELCImagePicker が便利そう

UIImagePicker は、便利ですが、一度に一つづつしか写真を選択出来ないので、分かりにくいときもあります。これを解決するELCImageView Picker が便利なので使ってみました。MITライセンスのようです。

写真の複数選択
写真の複数選択

こんな感じで、複数写真取得出来るのは嬉しいですね。フォトストリームもちゃんと取得出来ています。
“UIImagePicker 風に複数画像選択も出来る ELCImagePicker が便利そう” の続きを読む

UISwipeGestureRecognizer でスワイプでシュッと出して閉じるメニューのコードを公開しました

はじめに

こんな感じの動きが、 UIGestureRecognizer (UISwipeGestureRecognizer) を使用して作れます。Apple WWDC 2011 ビデオの、Advanced Scroll View Techniques [Session 104] で説明されていた情報を元に作りました。素晴らしいセッションが公開されているので、ぜひとも多くの開発者が益を受けて欲しいと思い,ソースを公開したので、良かったらご覧下さい。
“UISwipeGestureRecognizer でスワイプでシュッと出して閉じるメニューのコードを公開しました” の続きを読む