0

私が作成したiphoneアプリケーションで、NSStringへの拡張クラス。

NSString+Extensions.mクラス

メソッドの 1 つで、文字列を NSMutableString に変換する必要があります。

私はこれを使用しようとしました:

NSMutableString * stringToManipulate = [NSMutableString stringWithString:self];

しかし、それは警告を出しています:

Incompatible pointer types sending 'const Class' to parameter of type 'NSString *'

私の知る限り、メソッドを呼び出した文字列への参照ですよね?では、なぜ NSString* 型であってはならないのでしょうか? 自分自身で通常の NSString メソッドを使用できることを知っています。

この問題について何か考えはありますか?

ありがとう

4

2 に答える 2

1

Objective-Cではself、クラスメソッド内で呼び出すと、クラスオブジェクトを参照します。NSStringクラスメソッドの場合、呼び出すことはself[NSStringクラス]を呼び出すことと同じです。

したがって、あなたの行は次と同じです:

NSMutableString * stringToManipulate = [NSMutableString stringWithString:[self class]];

メソッドをクラス1(+シンボル)からオブジェクト1(-シンボル)に変更すると、機能しますが、(オブジェクトから)別の方法で呼び出す必要がありますNSString

さらに説明が必要な場合は、メソッド宣言全体を投稿できますか?+ classメソッドの詳細については、NSObjectプロトコルリファレンスを確認することもできます:https ://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html

これがお役に立てば幸いです、

于 2013-03-04T13:10:54.590 に答える
1

メソッドがクラス メソッド (+ 記号を使用) またはインスタンス メソッド (- 記号を使用) として宣言されているかどうかを確認します。最初のケースの場合、コンパイラの警告は正常です。メソッドをインスタンス 1 に変更してから、

于 2013-03-04T12:58:11.800 に答える