【问题标题】:Exception in mouseDown methodmouseDown 方法中的异常
【发布时间】:2010-07-20 07:54:35
【问题描述】:

我正在使用 NSView 进行拖放。

在要拖拽的对象,也就是NSView的子类中,我实现了mouseDown:方法如下:

@try {
    NSPoint location; 
    NSSize size ;
    NSPasteboard *pb = [NSPasteboard pasteboardWithName:@"CameraIconContainer"];

    location.x =  ([self bounds].size.width - size.width)/2 - 21.0;
    location.y =  ([self bounds].size.height - size.height)/2 - 7.0;

    NSLog(@"mouseDown: location- (%f, %f)",location.x,location.y);


    NSDictionary *iconViewDict = [[NSDictionary alloc] initWithObjectsAndKeys:[cameraNo stringValue],@"cameraNo",nil];
    NSLog(@"iconViewDict - %@",iconViewDict);

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:iconViewDict];


    [pb declareTypes:[NSArray arrayWithObject:IconDragDataType] owner:self];
    [pb setData:data forType:IconDragDataType];
    [self dragImage:[NSImage imageNamed:@"camera_icon.png"] at:location offset:NSZeroSize event:e pasteboard:pb source:self slideBack:YES];
}
@catch (NSException * e) {
    NSLog(@"CameraIconView (-mouseDown:), error - %@",e);
}

大多数时候它工作正常,但问题是 - 有时它会引发这个

异常:无效参数 not 令人满意:theWriteStream != NULL

在mouseDown:方法中,因为它拖拽的图像在屏幕上不断出现,即使选择了其他窗口也不会消失。

谁能告诉我为什么会发生,我该如何解决?

谢谢,

米拉杰

【问题讨论】:

    标签: cocoa drag-and-drop onmousedown


    【解决方案1】:
    exception:Invalid parameter not satisfying: theWriteStream != NULL
    

    这种异常来自断言。某事即将尝试写入流,并断言它有一个流要写入。当断言失败时,这意味着条件不正确;在这种情况下,这意味着它没有要写入的流。

    我在您提供的示例中没有看到任何与流相关的代码,因此它位于您应用程序的其他位置或您正在使用的框架中的某个位置。您应该在 Xcode 中打开“停止 Objective-C 异常”,然后在调试器下运行您的应用程序,直到发生异常,然后查看调试器中的堆栈跟踪以了解究竟是什么引发了异常。

    【讨论】:

    • 好的..感谢您的澄清...在我的应用程序中,我集成了一个聊天客户端应用程序,其中我正在使用 AsyncSocket 类。当聊天客户端未连接到聊天服务器时,它会在调试器中产生以下错误:*** -[AsyncSocket doCFWriteStreamCallback:forStream:] 中的断言失败...无效参数不满足:theWriteStream!= NULL...我认为这可以是我在 mouseDown 上出现异常的原因:?
    • 是的。 mouseDown: 实际上与问题无关。您是否自己将doCFWriteStreamCallback:forStream: 消息发送到套接字?通常,它没有理由收到这样的消息,除非它的 CFWriteStream 回调被调用,而这只会发生,因为 CFWriteStream 调用了它。
    猜你喜欢
    • 2011-06-13
    • 2012-03-18
    • 1970-01-01
    • 2017-08-05
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多