- ベストアンサー
iOSでnotificationを受取るメソッド名
- iPhone向けのゲームアプリを書いています。電話が掛かってきた時にアプリを止めるためにはapplicationWillResignActiveメソッドにその処理を書けばいいことはわかったのですが、AppDelegateにそのメソッドは書けてもViewControllerには書けません。その場合applicationWillResignActiveNotificationを使うのだ、と教えていただいたのですが、そのapplicationWillResignActiveNotificationを受取るメソッド名がわかりません。
- iPhone向けのゲームアプリを開発している場合、電話が掛かってきた時にアプリを止める処理が必要となります。AppDelegateにはapplicationWillResignActiveメソッドを書くことで実現できますが、ViewControllerには書くことができません。そのため、applicationWillResignActiveNotificationを使ってnotificationを受取るメソッドを実装する必要があります。ただし、具体的なメソッド名が分からず困っています。
- iOSのゲームアプリを作成している際、電話が掛かってきた時にアプリを停止する処理が必要です。AppDelegateにはapplicationWillResignActiveメソッドを書くことで対応できますが、ViewControllerにはそのまま書くことができません。そのため、applicationWillResignActiveNotificationを使用してnotificationを受け取るメソッドを実装する必要があります。しかし、具体的なメソッド名がわからず困っています。どなたか教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 私は、ViewController.hとViewController.mに - (void) halt; というメソッドを書き、その中にゲームを中断させる処理を書き、AppDelegate.mから [viewControler: halt]; という文で実行させようとしました。 書式が違います。「[viewController halt];」ですね。コロンは、そのあとに引数(Parameter)がくることを示す記号です。
その他の回答 (1)
- harawo
- ベストアンサー率58% (3742/6450)
> その場合applicationWillResignActiveNotificationを使うのだ、と教えていただいたのですが、そのapplicationWillResignActiveNotificationを受取るメソッド名がわかりません。 いくら探しても見つかりません。なぜなら、そのメソッドは、任意の名称だからです。いいかえれば、自由に名前を付けてかまわないのです。 ここらへんを説明するのに、前提として「selector」の概念がわかっていなければいけませんが、それはだいじょうぶですか?「selectorってなに?」という状態なら、まず「selector」の勉強をしてください。 http://okwave.jp/qa/q6727202.html この質問の続きの質問だと、思われるので、こちらも続きの回答をします。 私は、けっして「Delegate(applicationWillResignActive:」ではだめだ。Notificationを使わなければ、プログラムできない」ということを、言ったつもりはありません。「Delegateでもいいけど、Notificationも使えますよ」というアドバイスをしたに過ぎません。 あなたにとってNotificationの荷が重たければ、Delegate利用のプログラムを行ったほうがいいでしょう。 「~AppDelegate.h」ファイルを開いてください。「~ViewController *viewController;」というインスタンス変数と、「@property (nonatomic, retain) IBOutlet ~ViewController *viewController;」というプロパティの宣言があるはずです。これがViewControllerのインスタンスです。このインスタンスに対して、処理を行います。 プロパティ宣言に、IBOutletとあるように、このインスタンスは、Nibファイル(MainWindow.xib)で生成されたものです。なので、アプリが終了するまで、このインスタンスは開放されることはありません。
お礼
ご丁寧に教えていただきありがとうございます。 Notificationは今の私にとって荷が重いので、この問題が一段落ついてから改めて勉強してみます。 そこで、Delegate利用のプログラムを行ったのですが、エラーで立ち往生してしまいました。 私は、ViewController.hとViewController.mに - (void) halt; というメソッドを書き、その中にゲームを中断させる処理を書き、AppDelegate.mから [viewControler: halt]; という文で実行させようとしました。 ところがビルドで 'halt' undeclared ということでエラーがでてしまいました。 言われてみればそのとおりかもしれませんが、ViewControllerのメソッドの宣言をAppDelegateで行う方法がわかりません。 もしかしたら「プロトコルというやつかもしれない」と思い、ViewControlerに @protocol myView - (void) halt; @end と書き、XxxAppDelegate.hに @interface XxxAppDelegate : NSObject <UIApplicationDelegate, myView> と書いてビルドしてみたら Cannot find protocol decraration for 'myView'というエラー(言われてみれば当然のように思えますが)が返ってきました。 おそらくきわめて基本的なところで考え違いをしているのだと思いますが、この 'halt undeclared' というエラーを消す方法を教えていただけると大変助かります。それがわかれば、とりあえず今回の一連の問題は解決するように思います。
お礼
たいへんありがとうございました。 これでこの問題もなんとか解決できました。 落ち着いたらObjective-Cを最初からきちんと勉強してみます。 素人の思い違いの質問に最後までお付き合いいただきありがとうございました。