-1

アップデート

そのクラスのインスタンスでクラス メソッドを呼び出していたことがわかりました。

そのコード行を次のように修正しました。

double result = [CalculatorBrain runProgram:[self.brain program] usingVariableValues:[self variableValues]];

しかし、プログラムを実行してその行が評価されると、次のエラーが発生します。

+[CalculatorBrain runProgram:usingVariableValues:]: 認識されないセレクターがクラス 0x6908 に送信されました

オリジナル

ビューの enterPressed 内の XCode で次のエラーが発生するのはなぜですか?

** CalculatorViewController.m **

#import "CalculatorViewController.h"
#import "CalculatorBrain.h"

@interface CalculatorViewController()

@property (nonatomic, strong) CalculatorBrain *brain;
@property (nonatomic, strong) NSMutableDictionary *variableValues;

@end

@implementation CalculatorViewController

@synthesize brain = _brain;
@synthesize variableValues = _variableValues;

- (CalculatorBrain *)brain {
    if (!_brain) _brain = [[CalculatorBrain alloc] init];
    return _brain;
}

- (NSMutableDictionary *)variableValues {
    if (!_variableValues) {
        _variableValues = [[NSMutableDictionary alloc] init];
    }
    return _variableValues;
}

- (IBAction)enterPressed {

    double *result = [self.brain runProgram:[self.brain program] usingVariableValues:[self variableValues]];

}

** CalculatorBrain.h **

#import <UIKit/UIKit.h>

@interface CalculatorBrain : NSObject

+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues;

@property (readonly) id program;


@end
4

2 に答える 2

2

CalculatorBrain.h では、インスタンス メソッドではなくクラス メソッドを宣言しています。

+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues;

-の代わりに使用し+ます。

または、これをクラス メソッドにする場合は、次のように呼び出します。

 double *result = [CalculatorBrain runProgram:[self.brain program] usingVariableValues:[self variableValues]];
于 2012-10-24T00:32:47.223 に答える
0

クラス レベルのメソッドを追加する場合は、インスタンスでメソッドを呼び出すのではなく、クラス自体でメソッドを呼び出します。例えば:

double *result = [self.brain runProgram:[self.brain program] usingVariableValues:[self variableValues]];

次のようになります。

double *result = [CalculatorBrain runProgram:[self.brain program] usingVariableValues:[self variableValues]];

上記で定義されたメソッドが表示されないため、それが意図したものかどうかわかりません。

于 2012-10-24T00:35:20.347 に答える