「Leaks」で出た、頭に「_NSZombie_」がついた「Leaks Object」の解消法

instruments」で「Leaks」を利用した時に、なぜか大量に頭に「NSZombie」がついたLeaks Objectが見つかったので、ここ数日とても困っていました。 しかし、本日ようやくこの「NSZombie」を解消することができました。

2013 2 9 ddss

解決方法

これは普通にcocos2dを利用している人にはまず出て来ません。 main.mでこの記述をしていると出てくるみたいです。 [c] extern void _CFEnableZombies(void);//<===こいつです

int main(int argc, char *argv[]) {

_CFEnableZombies(); //  <===こいつです


NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
/*
 int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
 [pool release];
 return retVal;
 */


int retVal = -1;
@try {
    retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
}
@catch (NSException *exception) {
    NSLog(@"%@", [exception callStackSymbols]); 
    @throw exception; 
}
@finally {
    [pool release];
}
return retVal;

} [/c]

おそらくこのサイトを見て記述をして、そのままにしておいたのが原因だったみたいです。

「main.m」から「extern void CFEnableZombies(void);」CFEnableZombies(); 」を削除しましよう。

さいごに

私のメモリーの問題は、これ以外ににもたくさんあり、できるかぎりメモリを抑えようと色々調べています。 アプリが完成する前に、大きな山ですね。

‘Local Declaration of "*****" Hides Instance Variable’が出るときの解決方法[エラー]

Xcode上に「‘Local Declaration of "●●" Hides Instance Variable’」とエラーがでる。 2013 2 8 7766

これは、ローカルの変数とインスタンス変数が被っていますという意味です。

例 [c]

//ローカル変数
NSDictionary dict = [[NSDictionary alloc] **********;

[self loadSpriteFrames:dict];

//インスタンス内 -(void)loadSpriteFrame:(NSDictionary*)dict{ //このインスタンス変数の名前(dict)が被っているので注意文がでます。

} [/c]

インスタンスの変数をdictから別の名前に変えてあげれば注意文は消えます。 もし、このような症状が出た場合は、一度この方法を試してみてください。

「iPhone」のカメラが立ち上がらなくなった時の対応策

iPhoneのカメラアプリのボタンを押しても、黒い画面が出て立ち上がらない。 そういった時の対応策を今回紹介します。

対応策

原因はどうあれ、アプリケーションが立ち上がらない時はiPhone自体を再起動させましょう。

やり方は簡単。 下記画像のように「ホームボタン」と「スタートボタン」を同時に長押しします。 2013 2 7 6655

そうすると下記のような画面になります。 「電源オフ」にしてあげます。 2013 2 7 6655

iPhoneの画面が完全に消えた後に、スタートボタンを押せば再起動完了です。 これでカメラアプリも立ち上がるでしょう。

原因と今後の対策

私の、原因は「他のアプリにメモリを使っているので、起動しない。」というものでした。 もしかしたら、とても容量の重いアプリを同時に立ち上げている場合などがこれに当てはまります。

対応策としては、使っていないアプリはバックグラウンドからこまめに消していきましょう。

[バックグラウンドの出し方と削除方法]

ホームボタン」を連続して2回押します。 2013 2 7 6655

そうすると画面下に「バックグラウンド」が出てきます。 ここにあるアプリを長押しすると「ー(マイナス)」マークが出てきます。これを押して消していきます。 2013 2 7 6655

こまめに消して、メモリーを節約しましょう。

iPhoneアプリ開発者に知ってもらいたい「IPhoneの画面を撮影して動画を作成する方法

2013/1/22/ffre

ゲームのプロモーションのため、iPhoneの実機の動画撮影したいと色々調べたところ、今のところこの方法が一番良いと思い実際に行なってみました。 結構有名なアプリなんですが、「Reflector」を利用します。

「Reflector」はMac本体で「AirPlay」を利用できるようにするアプリケーションです。 これを利用すれば、iPhone内の動きをMacで見ることができるようになります。こうすれば、iPhone内の動画を撮影することができます。

AirPlayとは

元々はAppleTV用の作られたもので、Wi-FIを通じて、Macの画面をTVに移したり、iPhoneの音楽を流したりすることができる仕組みです。 詳しくは下記サイトから。 アップル - AirPlay - iOSデバイスにあるコンテンツをApple TVで再生。

Reflectorを導入する

「Reflector」には、無償版と有償版があり、無償版に関しては10分間しかアプリを起動することができません。 ただ、どういったものなのかは体験できると思います。

有償版に関しては、$12.99(2013/1/22時点)で1ライセンス購入して利用します。大体1100円くらいです。 下記、「Reflector」のホームページからライセンスの購入とアプリのダウンロードができます。詳しくはサイトを確認ください。 Reflector.app - AirPlay mirroring to your Mac or PC, wirelessly.

私は実際に購入しました。メールでライセンスが届くのでアプリの所定の位置に入力すれば完了です。

Reflectorを使ってみよう

私はiMaciPhoneで利用します。

MaciPhoneの準備

まずは、Mac上でダウンロードした「Reflector」を起動させます。

次にiPhoneを起動させ、ホームボタンを2回押します。 そうすると下段が出てきます。この部分を右方向にスワイプします。 1 222 2013ff 2

次のページも更に右方向にスワイプします。 2013 1 22 33

そうすると,「AirPlay」のボタンがあるはずです。 これは「Reflector」がMac上で起動していないと出て来ませんのでご注意ください。(下記画像参考) 2013 1 22 3322 2013 1 22 332 3

「AirPlay」のボタンを押すと、以下の画面が出てきます。 Macを選択して、「ミラーリング」をオンにしてあげます。 2013 1 22 332ffs

これで、準備完了です。 これでMac上にiPhoneの画面が表示されているはずです。 2013 1 22 332ff

Reflector

動画の画像のサイズを変更

色々なサイトを見ると、Macの性能やWi-Fiの速度などによってサイズが大きい場合、動画にカクつきが生まれるようです。 ですので、自分の環境にあったサイズを選択してください。 画面右上の[Reflector] => [Preferences]を開くと以下のような画面がでてきます。 2013 1 22 3322

私のWi-Fiは光ケーブルで速度は結構あるのですが、Macが古いので[Retina iPhone]でも、すごくカクつきが目立ちました。 ですので、[Standard iPhone]にしています。これでもたまにぎこちなくなります。

録画する

画面右上の[Device]を選択すると以下の様な画面が出てきます。 2013 1 22 3322

「Start Recording」を押せば、iPhone内の録画がスタートします。 時間も出てくるので、わかりやすいです。 _1_22_2013_ffd

保存する

先ほど押した「Start Recording」「Stop Recording」に変わっているので、これをおすと録画が止まります

後は、ファイルの名前と保存先を設定すれば完了です。 スクリーンショット 2013 01 22 23 52 30

実際にとってみた

ゲームのプロモーションに使える動画を撮影したくて、今回のアプリケーションを入れてみました。 実際に撮った動画を見ると、編集の仕方が悪いのかもしれませんが[Standard iPhone]では画像の質はそんなに良くなさそうです。 まだまだ改善の余地がありそうです。

[参考サイト]

ゲーム開発日誌 現状について

自分のことをブログで久しく書いていなかったのですので、今回は現状について簡単に書いて行きたいと思います。

ゲーム開発について

ほぼ一年をかけてようやく完成に近づいています。 2012_1_10_2

現在は、敵の行動パターン(AI)の調整と効果音・音楽の作成をしています。

今までの簡単な流れは

  • cocos2dの勉強
  • キャラクター、背景、インターフェースの画像の作成
  • ゲームのシステムの開発(移動や攻撃、アニメーションなど色々)
  • マップの作成(ダンジョンやフィールド)
  • Retina対応とその画像の作成
  • イベントの作成
  • ゲーム音楽・効果音の作成+テストプレイ(いまここ)

何をするにも初めてやることばかりで、全て0から作っているのですが、ちょっと時間かかりすぎだろうと思っています。 ここ2ヶ月はゲーム音楽と効果音の作成などをしているのですが、イベントもまだ改善しないといけないと考えています。

今後の課題

また、ゲームを開発するだけではなく、より多くの人に使ってもらえるようなプローモーションもしないといけません。 何をすればいいのかまだ良くわかりませんが、今できることとして、今日からこのブログで何かゲーム開発について書けそうなことがあれば書いていきたいなと思っています。

facebookのページの背景とアイコンを変更

未だ使い方がよくわからないfacebookのページ。 とりあえず、見た目を変えてみようと本日、背景とアイコンを変更しました。 こんな感じです。 _2013_1_10_ff albatrus.com | Facebook

illustratorを使って、画像を作っています。 illustratorは使いなれるとかなり色々なことができるのでとても面白いですが、下地になる絵を書く能力がないので、今年は絵をうまくかけるようにしていきたいですね。

The identity 'iPhone Developer' doesn't match any valid, non-expired certificate/private key pair in your keychains

Xcodeを利用している時に、以下の様なエラーが出た場合は、証明書の有効期限が切れています。 [The identity 'iPhone Developer' doesn't match any valid, non-expired certificate/private key pair in your keychains]

xcode上にはこんな形で表示されます。 スクリーンショット 2012 12 26 20 55 15

解決策

Apple Developerで再度証明書を発行しましょう。 iOS Dev Center - Apple Developer

「Cocos2d for Iphone 1 Game Development Cookbook」のサンプルコードでエラーが出た時の対応策 エラー[libxml2/tree.h not found]

「Cocos2d for Iphone 1 Game Development Cookbook」という日本では発売されていない洋書があります。たくさんのcocos2dの例が載っているのとても便利な本なのですが、Xcodeがバージョンアップしたことで、サンプルコードにエラーが出てしまいシミュレーターや実機で実行できなくなっていました。そのエラーを修正したメモを、今回ブログにのせていきます。

続きを読む