Luc*_*dus 10 macos cocoa copy-paste nspasteboard
我有一个不露面的Mac OS X应用程序,需要从其他应用程序复制选择.我通过模拟CMD + C键击实现了这一点.它完美地运作.但有一个,我认为这是至关重要的副作用.它会在未经许可的情况下覆盖用户的粘贴板.所以我在复制选择之前想到的是我应该保存粘贴板内容然后恢复它.有人可以给我一些提示,也许是示例代码?
这NSPasteboard是我写的一个类别.它似乎工作得很好.
@implementation NSPasteboard (SaveAndRestore)
// save current contents as an array of pasteboard items
- (NSArray *)save
{
NSMutableArray *archive=[NSMutableArray array];
for (NSPasteboardItem *item in [self pasteboardItems])
{
NSPasteboardItem *archivedItem=[[NSPasteboardItem alloc] init];
for (NSString *type in [item types])
{
/* The mutableCopy performs a deep copy of the data. This avoids
memory leak issues (bug in Cocoa?), which you might run into if
you don't copy the data. */
NSData *data=[[item dataForType:type] mutableCopy];
if (data) { // nil safety check
[archivedItem setData:data forType:type];
}
}
[archive addObject:archivedItem];
}
return archive;
}
// restore previously saved data
- (void)restore:(NSArray *)archive
{
[self clearContents];
[self writeObjects:archive];
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1130 次 |
| 最近记录: |