メッセージを送信する必要があります(メッセージを送信するクラスのインスタンスを作成する)コントロールクラスにメッセージを渡す必要があります。 「NSNotificationは」彼らが何であるか、クラス/関係なく、どこの、メッセージのすべての種類を渡すことができるように宣伝している場合ばかげているグローバル(することができません。前置きのでNSNotification addObserver:someOtherClass
...
( Say ClassBから呼び出す)
ClassAはClasのインスタンスを作成しますsBの
ClassB
で今
は、私は愚かな何かをする場合、これは今、申し訳ありませんが、私は含まれていても、"#import "ClassA.h"
をコンパイルしませんバックClassA
(insdie ClassB)
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:ClassA
selector:@selector(doLoginAction)
name:@"SomeButton"
object:nil];
[super viewDidLoad];
}
までのボタンの押下に関するメッセージを渡す必要があります以下のように、その後、
ClassA *classa = [[ClassA alloc]init];
とは、それはコンパイルが、私のようになりますaddObserver:classa
中にClassAのこの新しく作成されたインスタンスを使用します私はそれを知っていましたが、驚くほどこの種のコードは、Iphoneプログラミングの書籍で流行しています...だから、私はとにかくそれを試みました。
しかし、私はClassA
でこの機能を入れて、それが呼び出されますが、スタックダンプunrecognized selector sent to instance
が発生したり、addObserver:self
を使用しますaddObserver:ClassB
を使用している場合。私は右のそれを得る場合、私はXcodeのを削除し、vimのに戻って、古き良き「C」コールバックを使用するように誘惑しています
...
偉大な答え....多くのありがとう! – chinasailor