DDMathParser в Objective-C ++ выдает ошибку

все, я новичок в Stack Overflow (и DDMathParser), но пришел сюда из-за странной проблемы, возникшей, когда я пытался использовать DDMathParser в файлеjective-c ++ (main.mm). Независимо от того, насколько простым был код, он выдает ошибку потока. Вот мой код:

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <iostream>
#import "DDMathParser.h"#import "NSString+DDMathParsing.h"#import <Cocoa/Cocoa.h>
#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
NSLog(@"%@", [@"5 + 5" numberByEvaluatingString]);
}

И вот консоль после запуска:

2015-08-29 09:23:09.788 calculator[6212:101522] -[__NSCFConstantString            numberByEvaluatingString]: unrecognized selector sent to instance 0x100001060
2015-08-29 09:23:09.792 calculator[6212:101522] *** Terminating app due to     uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString    numberByEvaluatingString]: unrecognized selector sent to instance 0x100001060'
*** First throw call stack:
(
0   CoreFoundation                      0x00007fff9365d03c   __exceptionPreprocess + 172
1   libobjc.A.dylib                     0x00007fff8fddd76e   objc_exception_throw + 43
2   CoreFoundation                      0x00007fff936600ad -  [NSObject(NSObject) doesNotRecognizeSelector:] + 205
3   CoreFoundation                      0x00007fff935a5e24   ___forwarding___ + 1028
4   CoreFoundation                      0x00007fff935a5998   _CF_forwarding_prep_0 + 120
5   calculator                          0x0000000100000e86 main + 38
6   libdyld.dylib                       0x00007fff864595c9 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)

Какие-либо предложения?

1

Решение

Вы не получаете «ошибку потока». Среда выполнения ObjC вызывает исключение, потому что вы отправляете сообщение объекту, и этот объект не реализует сообщение.

В частности, вы пытаетесь вызвать селектор numberByEvaluatingString на примере __NSCFConstantStringкоторый можно рассматривать для этой цели как NSString,

Теперь, так как вы включаете заголовочные файлы, которые определяют метод как категорию на NSString, вы не получите ошибку компиляции. Однако во время выполнения, когда среда выполнения ObjC отправляет селектор объекту, он не может найти реализацию, поэтому выдает исключение.

Скорее всего, это означает, что вы не создали и не связали библиотеку DDMathParser с небольшим примером программы. Таким образом, код реализации недоступен во время выполнения.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector