代码之家  ›  专栏  ›  技术社区  ›  Devarshi

mouseDown方法中出现异常

  •  0
  • Devarshi  · 技术社区  · 15 年前

    我正在用NSView做拖放操作。

    @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);
    }
    

    大多数情况下,它运行良好,但问题是-有时它提出了这一点

    exception:Invalid parameter 不

    在mouseDown:方法中,由于它,拖动的图像会连续出现在屏幕上,即使选择了其他窗口,也不会消失。

    有人能告诉我为什么会发生这种情况,我如何解决它吗?

    谢谢,

    米拉杰

    1 回复  |  直到 15 年前
        1
  •  3
  •   Peter Hosey    15 年前
    exception:Invalid parameter not satisfying: theWriteStream != NULL
    

    我在您提供的示例中没有看到任何与流相关的代码,因此它要么在您的应用程序中的其他地方,要么在您正在使用的框架中的某个地方。您应该在Xcode中启用Stop-on-Objective-C异常,然后在调试器下运行应用程序,直到异常发生,然后查看调试器中的堆栈跟踪,以查看到底是什么引发了异常。