【问题标题】:React Native - NSInvalidArgumentExceptionReact Native - NSInvalidArgumentException
【发布时间】:2017-04-13 15:44:40
【问题描述】:

我正在使用 react-native-piechart 来呈现单个图表。我已将ART.xcodeproj添加到我的库中。我还将libART.a 添加到我的Build Phases > Link Binary With Libraries

当我渲染图表时,我的应用程序崩溃了。运行 react-native log-ios 时,我得到以下堆栈跟踪

Apr 13 16:37:30 Dan-MBP mycpd[52875] <Error>: -[__NSArrayI length]: unrecognized selector sent to instance 0x6080000e8b80
Apr 13 16:37:30 Dan-MBP mycpd[52875] <Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: unrecognized selector sent to instance 0x6080000e8b80'
    *** First throw call stack:
    (
        0   CoreFoundation                      0x0000000105159d4b __exceptionPreprocess + 171
        1   libobjc.A.dylib                     0x0000000103fdd21e objc_exception_throw + 48
        2   CoreFoundation                      0x00000001051c9f04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
        3   CoreFoundation                      0x00000001050df005 ___forwarding___ + 1013
        4   CoreFoundation                      0x00000001050deb88 _CF_forwarding_prep_0 + 120
        5   mycpd                               0x0000000100cd0f77 -[RNSVGPathParser initWithPathString:] + 295
        6   mycpd                               0x0000000100cce0a0 +[RCTConvert(RNSVG) CGPath:] + 80
        7   mycpd                               0x0000000100c1ac0a __49-[RCTComponentData propBlockForKey:inDictionary:]_block_invoke.223 + 282
        8   mycpd                               0x0000000100c1b840 __49-[RCTComponentData propBlockForKey:inDictionary:]_block_invoke.259 + 720
        9   mycpd                               0x0000000100c1bbb8 __49-[RCTComponentData propBlockForKey:inDictionary:]_block_invoke_2.272 + 40
        10  mycpd                               0x0000000100bb6dd3 RCTPerformBlockWithLogFunction + 483
        11  mycpd                               0x0000000100bb6f8f RCTPerformBlockWithLogPrefix + 239
        12  mycpd                               0x0000000100c1bb1d __49-[RCTComponentData propBlockForKey:inDictionary:]_block_invoke.267 + 445
        13  mycpd                               0x0000000100c1c015 __37-[RCTComponentData setProps:forView:]_block_invoke + 181
        14  CoreFoundation                      0x00000001050ea2a5 __65-[__NSDictionaryI enumerateKeysAndObjectsWithOptions:usingBlock:]_block_invoke + 85
        15  CoreFoundation                      0x00000001050ea1ba -[__NSDictionaryI enumerateKeysAndObjectsWithOptions:usingBlock:] + 250
        16  mycpd                               0x0000000100c1be7f -[RCTComponentData setProps:forView:] + 223
        17  mycpd                               0x0000000100c01f02 __50-[RCTUIManager createView:viewName:rootTag:props:]_block_invoke + 162
        18  libdispatch.dylib                   0x0000000107804808 _dispatch_call_block_and_release + 12
        19  libdispatch.dylib                   0x000000010782612e _dispatch_client_callout + 8
        20  libdispatch.dylib                   0x000000010780d4fb _dispatch_main_queue_callback_4CF + 1054
        21  CoreFoundation                      0x000000010511de49 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
        22  CoreFoundation                      0x00000001050e337d __CFRunLoopRun + 2205
        23  CoreFoundation                      0x00000001050e2884 CFRunLoopRunSpecific + 420
        24  GraphicsServices                    0x0000000109cd2a6f GSEventRunModal + 161
        25  UIKit                               0x0000000102161c68 UIApplicationMain + 159
        26  mycpd                               0x0000000100a08ddf main + 111
        27  libdyld.dylib                       0x000000010786f68d start + 1
        28  ???                                 0x0000000000000001 0x0 + 1
    )
Apr 13 16:37:30 Dan-MBP SpringBoard[50607] <Error>: [KeyboardArbiter] HW kbd: Failed to set (null) as keyboard focus
Apr 13 16:37:30 Dan-MBP com.apple.CoreSimulator.SimDevice.D55EDF21-DD38-4727-9408-2ED7C7D3E93F.launchd_sim[50590] (UIKitApplication:com.thinkdigital.mycpd[0xb38b][52875]) <Notice>: Service exited due to Abort trap: 6
Apr 13 16:37:30 Dan-MBP backboardd[50608] <Error>: [Common] Unable to get short BSD proc info for 52875: No such process
Apr 13 16:37:30 Dan-MBP backboardd[50608] <Error>: [Common] Unable to get proc info for 52875: No such process
Apr 13 16:37:30 Dan-MBP assertiond[50611] <Warning>: notify_suspend_pid() failed with error 7

我的尝试

  • 通过yarn删除包,从Xcode中删除ART.xcodeprojlibART.a,然后重新安装。
  • 我已经尝试了多个图表库 - 这个问题仍然存在。
  • 我创建了一个新项目来测试库没有导致问题,它们工作得非常好。

【问题讨论】:

  • 您应该将此情况报告给库的开发人员。 NSArray 类没有 length 方法,但只有 count 方法。这是在原生 ObjC 的 NSArray 类之上实现的错误或一些奇怪的扩展。
  • 我不相信这是库 @StanislavPankevich 的问题,它已经工作了 3-4 周,并且在单独的 React Native 项目中工作。我想可能是我不小心点击了 Xcode。
  • 我在这里唯一要指出的是一个数组而不是一个字符串被传递给RNSVGPathParser的初始化程序。它正在尝试计算字符串的长度,但是却碰到了数组,因此崩溃了。我是 Objective-C 开发人员,不熟悉 ReactNative,所以我不能说为什么这个库会走错路。

标签: ios xcode reactjs react-native


【解决方案1】:

我在使用 react-native-progress 时遇到了同样的问题。报告了类似的崩溃here

为了修复,我删除了对 react-native-svg 的引用,然后运行:

npm install react-native-svg --save

react-native link react-native-svg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 2022-01-21
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2018-04-24
    相关资源
    最近更新 更多