【问题标题】:[__NSDictionaryM cordovaSettingForKey:]: unrecognized selector sent to instance[__NSDictionaryM cordovaSettingForKey:]:无法识别的选择器发送到实例
【发布时间】:2019-05-10 08:53:35
【问题描述】:

我是 XCODE 的新手,收到此错误消息。你能帮我解决吗?

Screenshot

2018-12-08 21:46:22.258801-0500 IAOGI 英文应用[653:6168] DiskCookieStorage 将策略从 2 更改为 0,cookie 文件: file:///Users/admin/Library/Developer/CoreSimulator/Devices/753BE612-F65B-44E8-A727-347043E8736A/data/Containers/Data/Application/8D1AD8A3-6384-48C0-8C1C-29F27E098D80/Library/Cookies/com .iaogcan.english.binarycookies

2018-12-08 21:46:23.175378-0500 IAOGI 英文应用程序[653:6168] Apache Cordova 原生平台版本 4.5.5 正在启动。

2018-12-08 21:46:23.177968-0500 IAOGI 英文应用[653:6168] 多任务 -> 设备:是,应用程序:是

2018-12-08 21:46:23.210797-0500 IAOGI 英文应用程序[653:6168] -[__NSDictionaryM cordovaSettingForKey:]:无法识别的选择器发送到实例 0x60000040df20

2018-12-08 21:46:23.277812-0500 IAOGI 英文应用程序[653:6168] *** 由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[__NSDictionaryM cordovaSettingForKey:]:发送到实例的无法识别的选择器 0x60000040df20'

*** 第一次抛出调用堆栈:( 0 CoreFoundation 0x000000010d54b1bb __exceptionPreprocess + 331

1 libobjc.A.dylib 0x000000010cabb735 objc_exception_throw + 48

2 核心基础 0x000000010d569f44 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132

3 核心基础 0x000000010d54fed6 转发 + 1446

4 核心基础 0x000000010d551da8 _CF_forwarding_prep_0 + 120

5 IAOGI英文应用0x000000010a9cacc7 -[CDVViewController viewDidLoad] + 199

6 IAOGI英文应用程序0x000000010a955df6 -[MainViewController viewDidLoad] + 54

7 UIKitCore 0x000000011acc14e1 -[UIViewController loadViewIfRequired] + 1186

8 UIKitCore 0x000000011acc1940 -[UIViewController 视图] + 27

9 UIKitCore 0x000000011b318c53 -[UIWindow addRootViewControllerViewIfPossible] + 122

10 UIKitCore 0x000000011b31936e -[UIWindow _setHidden:forced:] + 294

11 UIKitCore 0x000000011b32c5c0 -[UIWindow makeKeyAndVisible] + 42

12 IAOGI 英文应用 0x000000010a9cf4d0 -[CDVAppDelegate 应用程序:didFinishLaunchingWithOptions:] + 752

13 IAOGI英文应用程序0x000000010a955b73 -[AppDelegate 应用程序:didFinishLaunchingWithOptions:] + 195

14 UIKitCore 0x000000011b2d7bde -[UIApplication_handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 280

15 UIKitCore 0x000000011b2d95cb -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3979

16 UIKitCore 0x000000011b2dec2f -[UIApplication _runWithMainScene:transitionContext:completion:] + 1623

17 UIKitCore 0x000000011aafd4e9 __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 866

18 UIKitCore 0x000000011ab0629c +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153

19 UIKitCore 0x000000011aafd126 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 233

20 UIKitCore 0x000000011aafdae0 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 1085

21 UIKitCore 0x000000011aafbcb5 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 795

22 UIKitCore 0x000000011aafb95f -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 435

23 UIKitCore 0x000000011ab00a90 __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 584

24 UIKitCore 0x000000011ab0180e _performActionsWithDelayForTransitionContext + 100

25 UIKitCore 0x000000011ab007ef -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 221

26 UIKitCore 0x000000011ab0593a -[_UICanvas 场景:didUpdateWithDiff:transitionContext:completion:] + 392

27 UIKitCore 0x000000011b2dd44e -[UIApplication 工作区:didCreateScene:withTransitionContext:completion:] + 515

28 UIKitCore 0x000000011ae81d09 -[UIApplicationSceneClientAgent 场景:didInitializeWithEvent:completion:] + 357

29 前板服务 0x0000000116c1d2da -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 448

30 前板服务 0x0000000116c28443 __56-[FBSWorkspace 客户端:handleCreateScene:withCompletion:]_block_invoke_2 + 271

31 前板服务 0x0000000116c27b3a __40-[FBSWorkspace _performDelegateCallOut:]_block_invoke + 53

32 libdispatch.dylib 0x000000010f8cc602 _dispatch_client_callout + 8

33 libdispatch.dylib 0x000000010f8cfb78 _dispatch_block_invoke_direct + 301

34 前板服务 0x0000000116c5cba8 FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK + 30

35 前板服务 0x0000000116c5c860 -[FBSSerialQueue _performNext] + 457

36 前板服务 0x0000000116c5ce40 -[FBSSerialQueue _performNextFromRunLoopSource] + 45

37 核心基础 0x000000010d4b0721 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17

38 核心基础 0x000000010d4aff93 __CFRunLoopDoSources0 + 243

39 核心基础 0x000000010d4aa63f __CFRunLoopRun + 1263

40 核心基础 0x000000010d4a9e11 CFRunLoopRunSpecific + 625

41 图形服务 0x00000001128761dd GSEventRunModal + 62

42 UIKitCore 0x000000011b2e081d UIApplicationMain + 140

43 IAOGI 英文应用 0x000000010a955a91 main + 65

44 libdyld.dylib 0x000000010f942575 开始 + 1

45 ??? 0x0000000000000001 0x0 + 1) libc++abi.dylib:以未捕获的类型异常终止 NSException (lldb)

【问题讨论】:

  • 你解决过这个问题吗?

标签: ios cordova


【解决方案1】:

这个错误表明CordovaPreferences category 没有被加载。这表明这是静态链接的,但 -objc 标志未传递给链接器。见QA1490: Building Objective-C static libraries with categories。我不熟悉 Cordova 的构建系统,但这表明您可能已经绕过它,或者项目设置已损坏。 (我一生中从未接触过 Cordova,除了它的说明表明有一些特殊的构建步骤之外,我对它的构建方式一无所知。)

这个堆栈的重要部分是这个框架:

5 IAOGI English App 0x000000010a9cacc7 -[CDVViewController viewDidLoad] + 199

这是通用断言逻辑之前的最后一帧。在 GitHub 中搜索“CDVViewController”会将我们带到CDVViewController.m。它的-viewDidLoad 包括:

id backupWebStorage = [self.settings cordovaSettingForKey:@"BackupWebStorage"];

查找settings 显示它是NSMutableDictionary

@property (nonatomic, readwrite, strong) NSMutableDictionary* settings;

由于cordovaSettingForKey: 不是NSMutableDictionary 上的标准方法,它很可能是一种类别方法,我们可以在源代码中进行更多搜索。该文件遵循标准命名模式:NSDictionary+CordovaPreferences.h(以+ 分隔的类和类别名称)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 2015-03-04
  • 2019-08-28
  • 2012-07-24
相关资源
最近更新 更多