• 締切済み

Objective-C error = 24

iPhoneのアプリ開発に関する質問です UIButtonやUIImageViewを組み合わせてアプリを作成したのですが シュミレーターで実行した際、UIButtonをアニメーションで 表示させたりAVAudioPlayerでcafを再生させたりと処理を繰り返していると error = 24 (Too many open files) というエラーが発生して途中で音声が再生されなくなります エラーの内容は調べたところによるとファイルがオープンしたままで閉じていない 開きすぎている。といった状態です ソースコードを載せないと解決方法が分かりづらいかもしれませんが オープンしたUIButtonなどを閉じるにはどういったコードをどのクラスに書けばよいのでしょうか?

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

まず原因が UIButton,UIImageView つまり UIView 関連なのか AVAudioPlayer によるものなのかを突き止めてみて。 つまりAVAudioPlayerのオブジェクトを一旦コメントアウトとかにして error が出るかどうか。 (AVAudioPlayerの分だけ多く繰り返さないと判明しないので注意) 出ない様ならAVAudioPlayerのせい。出るならview関連。 viewだけでエラーが出るなら addSubview し続けてて ってことかも。

nosuke5614
質問者

お礼

AVAudioPlayerが原因でした ありがとうございます

関連するQ&A

  • CGRectContainsPoint 一度処理

    またこちらで質問させていただきます iPhone Objective-Cに関する質問です CGRectContainsPointで指定したUIButtonの内側にtouchesMovedで動かしている UIImageViewが存在すると指定したcafをAVAudioPlayerで再生させる というコードを書きました しかしこれだと UIButtonの内側で動作があると何回も音声が再生されてしまいます UIButtonのサイズが大きいとUIImageViewがUIButton上を通過 させている間に何回も再生されます これを一度だけ再生させるようにするにはどうすればよいでしょうか? 1.UIButton上に来たら一度だけ再生 2.UIButton上から外れたら一度だけ再生という処理を解除 3.外れた後、UIImageViewをもう一度UIButtonの内側に持ってきたらまた1の処理 このようにしたいです。

  • iPhoneアプリ error = 24

    iPhoneのアプリを自作してみたのですが AVAudioPlayerでcafを再生させる処理が多い所為か 何度もアクションを実行していると途中で音声がでなくなってしまいます iPhone 4ではそういったバグが見られないのですが iPhone 3GSやXcodeのエミュレーターではバグが発生します メモリリークの問題だと思い - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {} に[player release];を書き込んでみたりしましたが結局バグは発生してしまいました (書き込む前は実行回数20~30の間でバグが発せしていましたが 書き込み後は実行数30~40の間で発生するようになりました) コンソールを表示させて行ったところバグ発生後に error = 24 (Too many open files) というエラーが表示されました。 どのようにすればバグが改善されるのでしょうか?

  • AVAudioPlayer インスタン

    iPhone の自作アプリで音声に関する場所を作成しているのですが AVAudioPlayerのインスタン作成場所について知りたいことがあります touchesMoved内 もしくは別クラスで音声を再生させる際 [ABC play];の上にコードを書き込み NSString *_ABC = [[NSBundle mainBundle] pathForResource:@"ABC" ofType:@"caf"]; ABC = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:_ABC] error:NULL]; [ABC play]; このようなコードになりました ここで思ったのですが 処理を実行する際、playだけを行ってくれればいいのに 上記コードだと2回目3回目の処理で毎回cafファイルを読み込みインスタンを生成する といった処理内容になってしまうのでしょうか? ツールを使用しメモリ使用率を確認したところAVAudioPlayerで メモリリークしているみたいです ログにはerror = 24 (Too many open files)と表示されます releaseもしていないのでそれも原因と考えられますが複数の音声を同時 もしくはバラバラ、もしくは同じ音声を連続で再生することもあるので releaseをどこに入れたらうまくいくのか理解できていません コードを書き込む位置も含めて簡潔でいいのでアドバイスをいただけるとありがたいです

  • Objective-C ボタンを動かすには

    Objective-Cはまったくの初心者で、iPhone用のアプリを作るのに書籍を見ながらサンプルをいじっています。 画像をタップしたらその画像自体が動くようなものを作りたいのですが、 RoundRectButtonを1個だけ配置して 【imageTestViewContollorer.h】 @interface imageTest1ViewController : UIViewController { IBOutlet UIButton *myButton; } -(IBAction)tapBtn; @end 【imageTestViewContollorer.m】 @implementation imageTestViewController -(IBAction)tapBtn{ myButton.center=CGPointMake(50,50); [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:2]; myButton.center=CGPointMake(160, 240); [UIView commitAnimations]; } としてみましたが、コンパイルエラーなどはありませんでしたが、ボタンを押しても何も起こりませんでした。 IBOutlet UIButtonが臭いような気もしているのですが、UIImageViewにするとRoundRectButtonと線を繋げなくなりますし、どう直してよいか見当もつかず困っています。 画像がタップされたら動く、みたいなものをそもそもRoundRectButtonに画像を割り当てた方がいいのかImageViewにタップされた場合の処理を割り当てた方がいいのかどうかもよくわかりません。 よろしくお願いいたします。

  • [Objective-C]アニメーション

    Xcode 4.5.2を使用して、Objective-CでiPhoneアプリの開発を行っています。 UIView(viewAとします)のsubViewとして 3つのUIButton(btn1, btn2, btn3とします)を配置し、 「animateWithDuration:delay:options:animations:completion:」メソッドを使用して viewAごと移動させるアニメーションを実行しようとしています。 btn1~btn3のタップイベントを実装したいのですが アニメーション実行中はbtn1~btn3のタップイベントが受け付けられません。 「animateWithDuration:delay:options:animations:completion:」メソッドの「option:」に 「UIViewAnimationOptionAllowUserInteraction」を指定してみたのですが それでもだめです。 原因が分かる方、いらっしゃいましたら教えていただけないでしょうか? 初歩的な質問で申し訳ありません。。 (ソース) ※画面はstoryboardで作成しています。 //アニメーション設定 [UIView animateWithDuration:5.0f delay:0.5 options:UIViewAnimationOptionCurveLinear |UIViewAnimationOptionAllowUserInteraction animations:^{ //移動 [self.viewA setFrame:CGRectMake(0, 330, 320, 60)]; } completion:^(BOOL finished) { //処理 } ];

  • Too many open files in system

    いつもお世話になっています。 今日、自宅PC(linux)のコマンド画面で $ ls と入力すると、 ls: .: Too many open files in system と表示されるだけで、コマンドが実行できません、 rootでも同じで、ls以外にも他のいくつかのコマンドも使えませんでした。 しばらくしてからもう一度やって見ると普通にできたのでとりあえずはいいのですが、調べて見るとこの現象のせいでHPが見れない、メールサーバーがとまる。等あまりよくないことがわかったので、原因を突きとめたいと思い質問させていただきました。 自分で調べた結果、「ls: .: Too many open files in system」のようなエラーが出るのは「file descriptor」を使い切っていることが原因であるということまでは分かりました。(合ってますかね^^;) なので、できればこの「file descriptor」を大量消費しているプロセスを突き止め、それをやめさせ、回復する方法を知りたいのです。よろしくお願いします。 サーバーは、http、mailサーバーになっていて、java、postgresqlなども動いています。

  • Androidアプリ開発・サンプルコードが開けない

    Androidアプリ開発は全くの初心者です。 パソコンでアンドロイドの開発環境の設定まではなんとか出来ました。 JAVA、eclipse、AndroidSDKのインストールまでも問題なく出来たと思うのですが、 いざSDKの中に入っているサンプルを開こうとするとエラーが出てシュミレーターでみれません。 ただ開けてシュミレーターで見れるサンプルもあるのです。 何がダメなのか全く分かりません。 どうかアンドロイドに詳しい方お教えください。 よろしくお願いします。

  • 今の時間gooで検索出来ますか?

    gooで今検索するとなぜかエラーが出るのですが 500 Servlet Exception java.io.FileNotFoundException: /usr/local/​www/htdocs/META-INF/MANIFEST.MF​ (Too many open files) 以下英語がズラっと並んでいます。 他のhpは見えますしgooメールも使えます。 皆さんは正常な状態で見れていますでしょうか?

  • ASP.NETでエラー処理について教えて下さい

    ASP.NET で 開発を行っています WEBアプリははじめての開発なので エラーの処理をどのようにしていいかわかりません 皆様は どのようにしてエラー処理を行っているでしょうか? 私は、Global.aspxにエラー処理を書いていますが エラーログをどのように残していいかわかっていません エラーログは簡単に取れる方法があるのでしょうか? いいアイデアありましたら教えてください できればコードを記述していただくと助かります ASP.NETのエラー処理のことです

  • メールを連送するアプリで Too many sending とのエラー

    メールを連送するアプリで Too many sending とのエラーが出る C#のSmtpClientクラスを使用して日本全国の約300ケ所にメールを送るプログラムを組みました メールサーバはOCNです 必ず43通目で MySmptClient.Send(Message); ステートメントがエラーを起こします エラー内容はclient host rejected: Too many sending です 連送が原因と思いメール送信間隔に2秒を取ったらOKでした【1秒ではNG】 この2秒間隔は私の当てズッポウです 『次のメールをメールサーバに送ってもいいよ!』というタイミングを知るには、どのような方法がありますか?

専門家に質問してみよう