0

NSNotificationCenterを使用して 2 番目のクラスのメソッドを呼び出そうとしていますが、エラーが発生します。

2 番目のクラスのメソッド (request.m) :

-(void)getTheRequest:(NSString *)whereToCall;

そして、私はNSNotificationCenterこのようにそれを呼び出そうとしています:

request *newRequest=[[request alloc]init];
[self performSelector:@selector(newRequest.getTheRequest:) withObject:@"mySite"];

しかし、この部分「newRequest.getTheRequest」でエラーが発生し、「期待される式」と表示されます。NSNotificationCenterこれを修正する方法や、別のクラスのメソッドを呼び出す方法を知っている人はいますか?

4

2 に答える 2

1

これを試して:

[newRequest performSelector:@selector(getTheRequest:) withObject:@"mySite"];

Apple のコーディング標準により、クラス名は大文字で開始する必要があり、ゲッターは get プレフィックスを使用しないことに注意してくださいCocoa のコーディング ガイドラインの概要

于 2013-04-05T08:13:12.710 に答える
1

あなたのメソッドは NSNotificationCenter ベースではないと思います。あなたがしようとしているのは、リクエスト オブジェクトのメソッドを呼び出すことです。

その場合、request代わりにself次のように呼び出します。

request *newRequest=[[request alloc]init];
[request performSelector:@selector(getTheRequest:) withObject:@"mySite"];

NSNotificationCenterは次のように使用されます。

ターゲット クラスにオブザーバーを追加します。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getTheRequest:) name:@"getTheRequest" object:nil];

ターゲット メソッドを実装します。

-(void)getTheRequest:(NSString *)string{
  //do something
}

そして、2 番目のクラスに通知を投稿します。

[[NSNotificationCenter defaultCenter] postNotificationName:@"getTheRequest" object:@"mySite"];

ターゲット クラスのオブザーバーを削除することを忘れないでください。忘れると、クラス オブジェクトの保持カウントが 1 のままになり、メモリから解放されません。

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"getTheRequest" object:nil];
于 2013-04-05T08:17:26.217 に答える