2015-09-20 5 views
1

Я абсолютно не знаком с Xcode и миром программирования iOS. Моя первая попытка изучить это была через простое приложение калькулятора. Все работало нормально, пока я не сделал небольшое изменение в моем файле ViewController.h, переименовав класс calculatordisplay в calculatorDisplay (D в столицах). Вернулись и обратно к старой.Ошибка моего калькулятора с этим сообщением об ошибке: libC++ abi.dylib: завершение с неперехваченным исключением типа NSException

С тех пор всякий раз, когда я подключаю к коду какие-либо числовые кнопки и нажимаю их в симуляторе, мое приложение разбилось. Я удалил старые соединения, переделал их. Вокруг меню «Полученные подключения» нет восклицательных знаков. Попробовал вариант Refactor, чтобы вернуться к моему прежнему рабочему коду. Даже я попытался сделать новый калькулятор с нуля, и в этом тоже получаю эту ту же ошибку, что и неперехваченная ошибка, как libC++ abi.dylib: завершение с неперехваченным исключением типа NSException.

Борьба с ним с утра, но напрасно!

Был бы очень признателен, если бы кто-нибудь мне помог?

Спасибо!

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UITextField *calculatordisplay; 

@end 

ViewController.m

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.calculatordisplay.text = @""; 
} 

- (IBAction)calculatordisplay: (UIButton*)buttonPressed { 
    NSString *digit; 
    digit = [buttonPressed currentTitle]; 
    NSString *calculatordisplay = [NSString stringWithString: self.calculatordisplay.text]; 
    self.calculatordisplay.text = [calculatordisplay stringByAppendingString:[buttonPressed currentTitle]]; 
} 

- (IBAction)clear:(UIButton*)buttonPressed { 
    self.calculatordisplay.text = @""; 
} 


- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
} 

@end 

Выход:

2015-09-19 20:33:45.808 MyCalculator[8226:339440] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSPlaceholderString initWithString:]: nil argument' 
*** First throw call stack: 
(
    0 CoreFoundation      0x0000000106e4af65 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x00000001068c4deb objc_exception_throw + 48 
    2 CoreFoundation      0x0000000106e4ae9d +[NSException raise:format:] + 205 
    3 Foundation       0x00000001064b5d9d -[NSPlaceholderString initWithString:] + 96 
    4 Foundation       0x000000010646b2f9 +[NSString stringWithString:] + 45 
    5 MyCalculator      0x00000001063c3873 -[ViewController calculatordisplay:] + 195 
    6 UIKit        0x00000001071f91fa -[UIApplication sendAction:to:from:forEvent:] + 92 
    7 UIKit        0x000000010735d504 -[UIControl sendAction:to:forEvent:] + 67 
    8 UIKit        0x000000010735d7d0 -[UIControl _sendActionsForEvents:withEvent:] + 311 
    9 UIKit        0x000000010735c906 -[UIControl touchesEnded:withEvent:] + 601 
    10 UIKit        0x0000000107263aa3 -[UIWindow _sendTouchesForEvent:] + 835 
    11 UIKit        0x0000000107264691 -[UIWindow sendEvent:] + 865 
    12 UIKit        0x0000000107216752 -[UIApplication sendEvent:] + 263 
    13 UIKit        0x00000001071f1fcc _UIApplicationHandleEventQueue + 6693 
    14 CoreFoundation      0x0000000106d770a1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
    15 CoreFoundation      0x0000000106d6cfcc __CFRunLoopDoSources0 + 556 
    16 CoreFoundation      0x0000000106d6c483 __CFRunLoopRun + 867 
    17 CoreFoundation      0x0000000106d6be98 CFRunLoopRunSpecific + 488 
    18 GraphicsServices     0x000000010a547ad2 GSEventRunModal + 161 
    19 UIKit        0x00000001071f7676 UIApplicationMain + 171 
    20 MyCalculator      0x00000001063c3dcf main + 111 
    21 libdyld.dylib      0x00000001094d692d start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
+0

self.calculatordisplay, вероятно, ноль. Убедитесь, что вы подключили розетку. – rmaddy

ответ

0

Я хотел бы проверить строки, которые вы пытаетесь разобрать

[NSPlaceholderString initWithString:] + 96 

После инициализации строки, это выглядит как ошибка/исключение происходит правильно, когда вы устанавливаете свой NSString.

Установлена ​​ли кнопка со строковым значением, которое передается? Другими словами, когда вы создаете кнопку «9» против кнопки «3», как вы ее дифференцируете, а затем разбираете требуемую операцию? Я подозреваю, что вам нужно проверить ярлык кнопки.

+0

Привет, Дэн, не могли бы вы рассказать о своем ответе? Как мне нужно различать кнопки? Я просто нажимаю клавишу Ctrl и перетаскивая строку с каждой кнопки на код. И, не стал проверять также метку? Благодаря! –

Смежные вопросы