こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

iOSでnotificationを受取るメソッド名

iPhone向けのゲームアプリを書いています。
電話が掛かってきた時にアプリを止めるためにはapplicationWillResignActiveメソッドにその処理を書けばいいことはわかったのですが、AppDelegateにそのメソッドは書けてもViewControllerには書けません。
その場合applicationWillResignActiveNotificationを使うのだ、と教えていただいたのですが、そのapplicationWillResignActiveNotificationを受取るメソッド名がわかりません。
ヘルプその他を調べていろいろ試してみたのですが、うまくいきませんでした。
どなたか教えていただければ幸いです。

投稿日時 - 2011-05-11 17:09:46

QNo.6730212

困ってます

質問者が選んだベストアンサー

> 私は、ViewController.hとViewController.mに - (void) halt; というメソッドを書き、その中にゲームを中断させる処理を書き、AppDelegate.mから [viewControler: halt]; という文で実行させようとしました。

書式が違います。「[viewController halt];」ですね。コロンは、そのあとに引数(Parameter)がくることを示す記号です。

投稿日時 - 2011-05-12 15:03:38

お礼

たいへんありがとうございました。
これでこの問題もなんとか解決できました。
落ち着いたらObjective-Cを最初からきちんと勉強してみます。
素人の思い違いの質問に最後までお付き合いいただきありがとうございました。

投稿日時 - 2011-05-12 16:20:45

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

> その場合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)で生成されたものです。なので、アプリが終了するまで、このインスタンスは開放されることはありません。

投稿日時 - 2011-05-11 23:03:04

お礼

ご丁寧に教えていただきありがとうございます。
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' というエラーを消す方法を教えていただけると大変助かります。それがわかれば、とりあえず今回の一連の問題は解決するように思います。

投稿日時 - 2011-05-12 12:53:37

あなたにオススメの質問