【问题标题】:iOS app crashes after adding ScanAPISDK添加 ScanAPISDK 后 iOS 应用程序崩溃
【发布时间】:2017-04-01 04:43:36
【问题描述】:

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

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

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 有关吗?

【问题讨论】:

    标签: objective-c socketscan


    【解决方案1】:

    看起来像是命名空间冲突。 libScanApiCore.a 有一个名为 kSymbology 的变量,而我的全局变量也名为 kSymbology。一旦我将变量名称更改为 ksymbology(小写 s),我的应用程序就不再崩溃了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-02
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多