我不太确定这是一个愚蠢的新手问题,所以我将其保留在主题行之外;-) 我的应用程序有一些 objC 框架正在通过桥接头进行桥接。我在运行时看到的一个问题与 objC NSData 对象长度属性与 Swift 数据计数属性有关。
在这种情况下,框架中的代码行如下所示
if([request.requestBody length] > 0){
请求对象的接口是这样的……</p>
接口 AEServiceRequest : NSObject
属性(非原子,只读,强,可空) NSData *requestBody;
当应用程序运行并询问长度方法(也是.length)时,下面抛出异常,好像长度调用没有转换为计数但 NSData 对象确实转换为数据。只是一个猜测。有没有人在他们的经历中看到过这种事情?有没有我想念的解决方法?
我在框架代码中添加了一些 NSLogs 以进行跟踪...
AEDAService: AEService 1.4.2 init started... 2016-08-25 14:12:44.592 AEDemoApp_Swift_OSX[24703:4124653] 进入:_urlRequest 2016-08-25 14:12:44.592 AEDemoApp_Swift_OSX[24703:4124653] 开始调用:if (request.requestBody.length > 0 2016-08-25 14:12:44.592 AEDemoApp_Swift_OSX[24703:4124653]-[_SwiftValue 长度]:无法识别的选择器发送到实例 0x61800004c480 2016-08-25 14:12:44.593 AEDemoApp_Swift_OSX[22: 4124653] 引发未捕获的异常 2016-08-25 14:12:44.593 AEDemoApp_Swift_OSX[24703:4124653]-[_SwiftValue 长度]:无法识别的选择器发送到实例 0x61800004c480 2016-08-25 14:12:44.593 AEDemoApp_Swift_OSX [24703:41_24Swift_ ] ( 0 CoreFoundation 0x00007fff942d04f2 __exceptionPreprocess + 178 1 libobjc.A.dylib 0x00007fff8c9a873c objc_exception_throw + 48 2 CoreFoundation 0x00007fff9433a1ad -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
任何人以前都见过这种行为。顺便说一句,使用带有 Swift 3 的 xCode 8 beta 6