Ios 测试是否将特定图像复制到粘贴板

Ios 测试是否将特定图像复制到粘贴板,ios,objective-c,xctest,uipasteboard,Ios,Objective C,Xctest,Uipasteboard,我正在编写一个测试来验证将图像复制到粘贴板的功能 以下是我更愿意写的测试: // reset the paste board UIPasteboard.generalPasteboard.image = nil; //<-- this explodes XCTAssertNil(UIPasteboard.generalPasteboard.image); // Grab some random existing image UIImage *image = [UIImage imageN

我正在编写一个测试来验证将图像复制到粘贴板的功能

以下是我更愿意写的测试:

// 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);
这是令人惊讶的,因为根据UIPasteboard标题,image是一个可为空的字段

@interface UIPasteboard(UIPasteboardDataExtensions)
<...>    
@property(nullable,nonatomic,copy) UIImage *image __TVOS_PROHIBITED;
<...>
@end
@接口UIPasteboard(UIPasteboardDataExtensions)
@属性(可空、非原子、复制)UIImage*image\uuuuTVOS\u禁止;
@结束
我假定这意味着他们正在对参数进行运行时检查,即使它是可为空的

我尝试过的事情:

  • 按id比较对象不起作用,因为UIImage是由generalPasteboard.image复制的(每次调用UIPasteboard.generalPasteboard.image时,都可以使用不同的实例)
  • 通过PNG表示进行比较可能会奏效,但似乎有些粗糙
  • 到目前为止,通过图像大小进行比较是我最接近的赌注,但似乎也是迂回的

您可以使用
items
属性清除粘贴板,而无需通过
nil

UIPasteboard.generalPasteboard.items = @[];
或使用Swift:

UIPasteboard.generalPasteboard().items = []
要比较UIImages,您可能需要了解一些其他问题:


您可以使用
items
属性清除粘贴板,而无需通过
nil

UIPasteboard.generalPasteboard.items = @[];
或使用Swift:

UIPasteboard.generalPasteboard().items = []
要比较UIImages,您可能需要了解一些其他问题:


您可以尝试
。items=[]
重置。谢谢!如果您发布为答案,我将接受。您可以尝试重置
。items=[]
。谢谢!如果你作为答案张贴,我将接受。