0

MainviewController.m から呼び出したい戻り値を持つメソッドがあります。また、メソッドを呼び出すときに値 (float) をメソッドに渡す必要があります。しかし、私はそれで問題を抱えています。メソッドにいくつかのブレークポイントと NSLog をデバッグして追加しようとしましたが、デバッガーがブレークポイントで停止せず、NSLog を出力しないため、メソッドが呼び出されていないようです. (最終的な出力 (calculatorScreen.text...) は単に (null) を出力します)

MainViewController.m

currentNumber = currentNumber *10 + (float)[sender tag];
NSNumber *convertedNumber = [[NSNumber alloc] init];
NSString *nf = [convertedNumber customFormatNumber:currentNumber];
calculatorScreen.text = [NSString stringWithFormat:@"%@",nf]; // it's printing (null) :(

NSNumber+FormatNumber.h

@interface NSNumber (FormatNumber)
-(NSString *) customFormatNumber:(float)n1;

NSNumber+FormatNumber.m

-(NSString *) customFormatNumber:(float)n1
{
    NSLog(@" %f" ,n1); // for debug and a breakpoint here
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
        [formatter setMaximumFractionDigits:2];
        [formatter setMinimumFractionDigits:0];
        NSString *nf = [formatter stringFromNumber:[NSNumber numberWithFloat:n1]];
    NSLog(@"Class %@" ,nf); // for debug
    return nf;
}

ここで何が欠けていますか?

4

2 に答える 2

5

[[NSNumber alloc]init]数値を指定していないため nil を返し、nil のターゲット アクションは無視されます。

あなたが長く不必要な道をたどっていることを伝えさせてください。私はただこのように書きます:

NSNumberFormatter* formatter=[NSNumberFormatter new];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:0];
formatter.numberStyle= NSNumberFormatterDecimalStyle;
calculatorScreen.text= [formatter stringFromNumber: @(currentNumber*10.0+[sender tag]) ];
于 2013-01-14T21:36:23.580 に答える
0

NSNumber を上書きしようとしていますか?

CustomNumber.h の場合

@interface CustomNumber:NSNumber
-(NSString *) customFormatNumber:(float) n1;

CustomNumber.m の場合

-(NSString *) customFormatNumber:(float)n1
{
    NSLog(@" %f" ,n1); // for debug and a breakpoint here
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setMaximumFractionDigits:2];
    [formatter setMinimumFractionDigits:0];
    NSString *nf = [formatter stringFromNumber:[NSNumber numberWithFloat:n1]];
    NSLog(@"Class %@" ,nf); // for debug
    [formatter release];
    return nf;
}

次に MainViewController.m で

currentNumber = currentNumber *10 + (float)[sender tag];
CustomNumber *convertedNumber = [[CustomNumber alloc] init];
calculatorScreen.text = [convertedNumber customFormatNumber:currentNumber];

また

MainViewController.m でメソッドを作成すると、コードは次のようになります。

currentNumber = currentNumber *10 + (float)[sender tag];
calculatorScreen.text = [self customFormatNumber:currentNumber];
于 2013-01-14T21:42:17.843 に答える