私はobjective-cが初めてで、 iPhone用の「チップ計算機」アプリを作成するためのチュートリアルを実行しました。私はXcode 4.3.3を使用しており、すべてのコードをチェックしましたが、チュートリアルのものと同じです(正しいと確信しています)。同じ問題を抱えている人を見つけようとしてサイトをトロールしてきましたが、修正できなかったので、助けていただければ幸いです. これは、アプリを実行しようとするたびに表示されるメッセージです。
2012-07-23 14:22:01.021 Tip_Calculator[554:f803] -[ViewController initWithCoder:]: 認識されないセレクターがインスタンス 0x68a3130 に送信されました 2012-07-23 14:22:01.025 Tip_Calculator[554:f803 ] uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController initWithCoder:]: unrecognized selector sent to instance 0x68a3130' * First throw call stack: (0x13c8022 0x1559cd6 0x13c9cbd 0x132eed0 0x132ecb2 0x234135 0x333c6e 0x333383 0x233cad 0x333c6e 0x33367b 0x333383 0x233105 0x43ceef 0x43d03e 0x11d7a 0x11ff8 0x1117f 0x20183 0x20c38 0x14634 0x12b2ef5 0x139c195 0x1300ff2 0x12ff8da 0x12fed84 0x12fec9b 0x10c65 0x12626 0x253d 0x24a5) 例外をスローして終了します (lldb)
これはmain.mでフラグが立てられた領域です:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }
}
すべてのインターフェイス接続を確認しましたが、問題ありません。例外ブレークポイントも追加しましたが、このエラーが表示されました:
2012-07-23 20:49:53.633 Tip_Calculator[2067:f803] -[ViewController initWithCoder:]: 認識されないセレクターがインスタンス 0x68c09c0 (lldb) に送信されました
これは、表示されるエラー ログです。
Tip_Calculator`start:
0x2470: pushl $0
0x2472: movl %esp, %ebp
0x2474: andl $-16, %esp
0x2477: subl $16, %esp
0x247a: movl 4(%ebp), %ebx
0x247d: movl %ebx, (%esp)
0x2480: leal 8(%ebp), %ecx
0x2483: movl %ecx, 4(%esp)
0x2487: addl $1, %ebx
0x248a: shll $2, %ebx
0x248d: addl %ecx, %ebx
0x248f: movl %ebx, 8(%esp)
0x2493: movl (%ebx), %eax
0x2495: addl $4, %ebx
0x2498: testl %eax, %eax
0x249a: jne 0x00002493 ; start + 35
0x249c: movl %ebx, 12(%esp)
0x24a0: calll 0x000024b0 ; main at main.m:14
**0x24a5: movl %eax, (%esp)**
0x24a8: calll 0x000033ca ; exit
0x24ad: hlt
0x24ae: nop
0x24af: nop
フラグが立てられた領域の周りにアスタリスクを置きました。例外ブレークポイントがあるかどうかに関係なく、同じエラーが表示されます。
私はストーリーボードを使用しています。ここにViewController.h
のファイルがあります:
#import <UIKit/UIKit.h>
@interface ViewController : NSObject
{
//outlets
IBOutlet UITextField *billField;
IBOutlet UITextField *tipFieldTen;
IBOutlet UITextField *tipFieldFifteen;
IBOutlet UITextField *tipFieldTwenty;
IBOutlet UITextField *tipFieldCustom;
IBOutlet UITextField *totalFieldTen;
IBOutlet UITextField *totalFieldFifteen;
IBOutlet UITextField *totalFieldTwenty;
IBOutlet UITextField *totalFieldCustom;
IBOutlet UILabel *customPercentLabel;
IBOutlet UISlider *customPercentSlider;
NSString *billTotal;
}
-(IBAction)calculateTip:(id)sender;
@end
.mファイルは次のとおりです。
#import "ViewController.h"
@implementation ViewController
- (void)awakeFromNib;
{
[billField becomeFirstResponder]; //display keyboard for billField
}
-(IBAction)calculateTip:(id)sender
{
static BOOL toggle = YES;
if (toggle)
{
toggle = NO;
NSString *billFieldText = billField.text;
float newTotal = [billFieldText floatValue];
float customTipPercent = customPercentSlider.value;
if(sender ==billField)
{
if (billFieldText.length <billTotal.length)
billTotal = [NSString stringWithFormat:@"%.02f",
newTotal / 10];
else
billTotal = [NSString stringWithFormat:@"%.02f",
newTotal * 10];
billField.text = billTotal;
newTotal = [billTotal floatValue];
float tenTip = newTotal * 0.10;
float fifteenTip = newTotal * 0.15;
float twentyTip = newTotal * 0.20;
tipFieldTen.text = [NSString stringWithFormat:@"%.02f", tenTip];
tipFieldFifteen.text = [NSString stringWithFormat:@"%.02f", fifteenTip];
tipFieldTwenty.text = [NSString stringWithFormat:@"%.02f", twentyTip];
totalFieldTen.text = [NSString stringWithFormat:@"%.02f", newTotal + tenTip];
totalFieldFifteen.text = [NSString stringWithFormat:@"%.02f", newTotal + fifteenTip];
totalFieldTwenty.text = [NSString stringWithFormat:@"%.02f", newTotal + twentyTip];
}
else if (sender == customPercentSlider)
{
int percentage = (int)(customTipPercent * 100);
customPercentLabel.text = [NSString stringWithFormat:@"%i%%", percentage];
float newSliderValue = ((float) percentage) / 100;
customPercentSlider.value = newSliderValue;
customTipPercent = newSliderValue;
}
float customTip = customTipPercent * newTotal;
tipFieldCustom.text = [NSString stringWithFormat:@"%.02f", customTip];
totalFieldCustom.text = [NSString stringWithFormat:@"%.02f", customTip + newTotal];
}
else
{
toggle = YES;
}
}
@end
私はObjective-cが初めてなので、どんな助けでも大歓迎です。