2016-04-01 13 views
0

クラスメソッドでインスタンスメソッドにアクセスしていますが、シングルトンクラスでエラーが表示されていますが、パラメータを使用してインスタンスメソッドにアクセスしようとすると、完全に機能するため、基本的には理由を知りたいこれにアクセスできません。シングルトンクラスで "self"を使ってインスタンスメソッドにアクセスする方法は?

私は自分で「someMethodA」を使用しようとするならば、それは完全に正常に動作しますが、自己を使用して「someMethodB」にアクセスすると、それはエラーに

+(void)someMethod 

{ 

    [self someMethodA:@"string" withParamB:@"string"]; works fine 

    [self someMethodB]; gives error 

} 
+0

エラーとは何ですか? – Gandalf

+0

"セレクタのための既知のクラスメソッドがありません" 基本的に私はクラスメソッド内のメソッド、すなわち "+"で始まるメソッドを使用しています –

+0

クラスメソッド内で 'self'を使用してインスタンスメソッドを参照することはできません - ' self' doesnこの場合、インスタンスを参照していません。 'someMethodA'もクラスメソッド(+)として定義されていませんか? – Paulw11

答えて

0

インスタンスメソッド(メソッド与え

-(void)someMethodA:(NSString *)paramA withParamB:(NSString *)paramB; 

-(void)someMethodB; 

のようなクラスメソッド( '+'で始まるメソッド)は[CLASS_NAME methodName]を使用してどこからでもアクセスできますが、[CLASS_NAME methodName]を使用すると、他のインスタンスメソッドからのみアクセスできます。

クラスメソッドからsomeMethodBにアクセスする必要がある場合は、次のようにクラスメソッドに更新するだけです。

+(void)someMethodB;