[Objecvice-C]クラスに対して任意のメソッドを実行する方法


というツイートを見かけたので、備忘で書いておきます。
“[Objecvice-C]クラスに対して任意のメソッドを実行する方法” の続きを読む

もう 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 プロファイルが、正しいものを使っていなかった。

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

サクッと Cocos2D ゲームを作ろう!(1)SpriteHelperでのテクスチャー処理

みんなで玉入れ!運動会 App
カテゴリ: ゲーム
価格: 無料

みんなで玉入れ!運動会 iPad アプリが、無事に1.0.1バージョンに更新されました。バグ修正、また、メニューにサウンドを追加しました。このアプリは、フレームワークにHome – Kobold2D™ – Kobold2D ,物理エンジンにBox2D | A 2D Physics Engine for Games を使用しています。

そして、レベルエディタとして、LevelHelper、スプライト作成ソフトとして、SpriteHelperを使用しました。これらのツールによって、多くの作業をグラフィカルに行うことが出来るので、プログラマーの作業を大幅に軽減することが出来ます。ちなみに、玉入れアプリは、基本の玉入れの動作はLevelHelper、SpriteHelperの勉強をかねて、5時間ほどで作ることが出来ました。

(そのあと、メニュー、デザイナとの共同作業、スコア表示、ゲームセンター、アプリ内購入などで、あと数日掛かっているんですが…)

LevelHelper App
カテゴリ: 開発ツール
価格: ¥1,600

SpriteHelper App
カテゴリ: 開発ツール
価格: ¥1,100

SpriteHelperには、お試し版の SpriteHelper FREEもありますが、機能制限があるので、実際にゲームを作るときは、通常版が必要かもしれません。
SpriteHelperFree App
カテゴリ: 開発ツール
価格: 無料

それでは、SpriteHelperから始めましょう。
“サクッと Cocos2D ゲームを作ろう!(1)SpriteHelperでのテクスチャー処理” の続きを読む

iOSのXML解析をJSONみたいに簡単に出来る XML Reader が便利

iOS のXML 取得、解析処理には基本的ないくつかの処理があります。
XML の処理方式として、

  1. SAX
  2. イベント駆動で行うXML解析

  3. DOM
  4. インターフェース指向で、木構造として扱う方式

があり、iOSでは、

  • NSXML(標準, SAX, Objective-C)
  • Libxml(標準, SAX, C言語)
  • TouchXML, KissXML (外部ライブラリ、DOM)

など、あるのですが、イベントを自分で記述したり、解析のためにオブジェクトをたどったりと、結構めんどうです。それを簡単にする方法があったのでご紹介します。
“iOSのXML解析をJSONみたいに簡単に出来る XML Reader が便利” の続きを読む

cocos2d 開発者必見! learn-cocos2d.com の cocos2d パフォーマンステストが凄い!

In Depth iOS & Cocos2D Performance Analysis with Test Project | Learn & Master Cocos2D Game Development
cocos2d の パフォーマンスに関する、Steffen Itterheim (gaminghorror) on Twitter 氏の渾身の記事がとても分かりやすいです。

cocos2d 本の作者、Kobold2D のメンテナーだけあって、Cocos2dのパフォーマンスへの掘り下げは半端ないです。


“cocos2d 開発者必見! learn-cocos2d.com の cocos2d パフォーマンステストが凄い!” の続きを読む