-1

最初に、私はcalculatorBrainを持っています:

@interface calculatorBrain : NSObject {
    NSString *theOperator;
}

@property (assign, nonatomic) NSString *theOperator;

-(float)performOperation:(float)a andOperandB:(float)b;
@end

次に、ViewControllerにリンクされた の関数button

ViewController.m の一部

@implementation ViewController
@synthesize result, brain;

-(IBAction)operatorPressed:(UIButton *)sender
{
    if([sender.currentTitle isEqualToString:@"AC"]) {
        result.text = @"0";
    } else if ([sender.currentTitle isEqualToString:@"."]) {
        if (0 == [result.text rangeOfString:@"."].length)
        result.text = [result.text stringByAppendingString:@"."];
    } else {
        brain.theOperator = sender.currentTitle;
        NSLog(@"%@", brain.theOperator); // return (null)
    }
}

ViewController.h

@interface ViewController : UIViewController {
    IBOutlet UILabel *result;
    calculatorBrain *brain;
}

@property (assign, nonatomic) IBOutlet UILabel *result;
@property (strong, nonatomic) calculatorBrain *brain;

-(IBAction)digitPressed:(UIButton *)sender;
-(IBAction)operatorPressed:(UIButton *)sender;

@end

問題は、 を押した後に何も設定しないのはなぜbuttonですか? ありがとう!

4

2 に答える 2

0

これを試して:

 -(IBAction)operatorPressed:(UIButton *)sender
    {
        brain = [[calculatorBrain alloc] init] autorelease];
        if([sender.currentTitle isEqualToString:@"AC"]) 
        {
            result.text = @"0";
        } 
        else if ([sender.currentTitle isEqualToString:@"."]) 
        {
            if (0 == [result.text rangeOfString:@"."].length)
                result.text = [result.text stringByAppendingString:@"."];
        } 
        else 
        {
            brain.theOperator = sender.currentTitle;
            NSLog(@"%@", brain.theOperator); // return (null)
        }
    }
于 2013-01-02T13:24:24.913 に答える
0

コード スニペットから、このプロパティが合成されることを期待しているようです。これについては、Web 上のさまざまなチュートリアルで詳しく読むことができます。

正確な動作は、使用する Obj-C のバージョンによって異なります。コードをよりよく理解するために、上記のチュートリアルを読むことをお勧めします。

于 2013-01-02T09:11:19.060 に答える