0

ここで単純なものが欠けているに違いありません。とにかく、私は通常の関数を作ることから始めましたが、

NSDecimalNumber* aa(NSMutableString *string)
{code}

次に、次のようにボタンを押して呼び出します。

- (IBAction)parse:(id)sender {
string1=[NSMutableString stringWithFormat:@"%@", screen.text];
NSDecimalNumber *output=aa(string1);}

(screen.textはラベルからのものです)しかし、途中で、関数が残りのviewcontroller.mクラスの変数を使用できないことに気づきました(逆もまた同様です)ので、関数を代わりにメソッド。これが私がしたことです。まず、これをviewcontroller.hに追加しました。

+ (NSDecimalNumber*) aa:(NSMutableString*) string;
@property (nonatomic, strong) NSDecimalNumber *number; //the number I'm working with

プロパティを合成し、関数宣言をこれに変更し、

+ (NSDecimalNumber*) aa:(NSMutableString*) string

このように呼び出そうとしましたが、

NSDecimalNumber *output=[[NSDecimalNumber alloc] aa:string1];

その試みで、2 つのエラーが発生しました。

そこで、インスタンスメソッドで再試行しました。+ を - に変更し、代わりにメソッドを呼び出しました

NSDecimalNumber *output;
[output aa:string1];

これにより、2 番目のエラーは修正されましたが、最初のエラーは修正されませんでした。@interface のメソッドを認識しない理由がわかりません。また、私が変更を試みたのはこれらだけではありませんでした。メソッドを呼び出す方法を複数試してみましたが、何もうまくいかないようです。何か案は?

4

2 に答える 2

1

この関数呼び出し:

NSDecimalNumber *output=[[NSDecimalNumber alloc] aa:string1];

aa..のインスタンスを呼び出そうとしていますNSDecimalNumber。それはあなたが望んでいることではないと思います、あなたのaaメソッドはあなたのクラスのメンバーではありませんか?また、クラス初期化子を呼び出していません(ただし、定義がで始まる限り、メソッドは静的であるため、呼び出す必要はありません+)。

// MyClass method definition
+ (NSDecimalNumber*) aa:(NSMutableString*) string

// Called with
NSDecimalNumber *output=[MyClass aa:string1];

- アップデート -

「インスタンス変数」エラーに対処するには、メソッドをインスタンスメソッドにする必要があります。+定義を次のように変更し-て呼び出します。

// MyClass method definition
- (NSDecimalNumber*) aa:(NSMutableString*) string

// Call it like this _if calling from within MyClass only_ (hence, "self")
NSDecimalNumber *output = [self aa:string];
于 2013-01-17T22:15:53.347 に答える
0

にメソッドを追加する場合は、カテゴリNSDecimalNumberを使用する必要があります。コードは、View Controller サブクラスにメソッドを追加します。

于 2013-01-17T22:17:40.127 に答える