添加ScanAPISDK后iOS应用程序崩溃

时间:2017-04-01 04:43:37

标签: objective-c socketscan

我正在尝试将socketscan SDK与我的目标C iOS应用程序集成。我下载了scanapisdk,在我的项目主文件夹中制作了scanapisdk的副本。我添加了Xcode项目的文件和库引用。编译并构建应用程序。在设备上运行它。几年来,以下代码一直没有问题。

我有一个在m文件中声明为全局变量的常量NSString

NSString * const kSymbology = @“Symbology”;

并将其声明为h文件中的extern

extern NSString * const kSymbology;

然后在数据库类中有这个代码片段

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
const char *Symbology = (const char*)sqlite3_column_text(statement, 0);
strSymbology = [NSString stringWithUTF8String:Symbology];

[dict setValue:strSymbology forKey:kSymbology];
[symbologies addObject:dict];
[dict release];

代码在此行崩溃     [dict setValue:strSymbology forKey:kSymbology];

当我将其更改为     [dict setValue:strSymbologyAlias forKey:@“Symbology”]; 该应用程序不会崩溃。

对我来说没有意义。似乎错误是在其他地方,它在这里偶然显示。我添加到项目中的唯一新功能是对socketScan文件和库的引用。我甚至没有调用SDK中的任何方法。我在ScanApiHelper.mm文件中注释掉了所有方法,现在应用程序没有崩溃。我开始在ScanApiHelper.mm中放回一些方法,我发现当任何提到SktClassFactory的行(例如[SktClassFactory createScanObject])处于活动状态时,应用程序崩溃了。

这与不使用CocoaPods安装sdk有关吗?

1 个答案:

答案 0 :(得分:1)

它看起来像名称空间碰撞。 libScanApiCore.a有一个名为kSymbology的变量,我的全局变量也叫做kSymbology。一旦我将变量名称更改为ksymbology(小写s),我的应用程序就不会崩溃。