我正在编写一个测试来验证将图像复制到粘贴板的功能。
这是测试,因为我更喜欢写它:
// reset the paste board
UIPasteboard.generalPasteboard.image = nil; //<-- this explodes
XCTAssertNil(UIPasteboard.generalPasteboard.image);
// Grab some random existing image
UIImage *image = [UIImage imageNamed:@"some-image"];
MJKMyClass *myInstance = [[myInstance alloc] initWithImage:image];
[myInstance doSomethingThatCopiesImageToPasteboard]
XCTAssertNotNil(UIPasteboard.generalPasteboard.image);
这失败了:
failed: caught "NSInvalidArgumentException", "-[UIPasteboard setImage:]: Argument is not an object of type UIImage [(null)]"
这是令人惊讶的,因为根据UIPasteboard标题,图像是一个可以为空的字段。
@interface UIPasteboard(UIPasteboardDataExtensions)
<...>
@property(nullable,nonatomic,copy) UIImage *image __TVOS_PROHIBITED;
<...>
@end
我认为这意味着他们正在对参数进行运行时检查,即使它可以为空。
我尝试过的事情:
答案 0 :(得分:3)
您可以使用nil
属性清除粘贴板而无需传递items
:
UIPasteboard.generalPasteboard.items = @[];
或者在Swift中:
UIPasteboard.generalPasteboard().items = []
为了比较UIImages,您可能想看一些其他问题: