问题
模拟器会卡死崩溃在剪切板的线程,如果复制空白就不会出现这个问题
解决方案
关掉模拟器的剪贴板同步功能,重启模拟器。
Simulator -> Edit -> Automatically Sync Pasteboard 取消勾选
重启模拟器 Hardware -> Restart
子线程读取剪切板
主线程读取剪切板时,偶现APP主线程卡死,然后程序被看门狗杀死。后来我们把读取剪切板操作放到了子线程。虽然是UIKit下的接口,但经与苹果技术人员确认,以及上线一年没回收到任何与此相关的crash,证实可行。 具体代码如下。另外,如果有多个业务方需要读取剪切板,建议放到同一队列管理。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^() {
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSString *string = [pasteboard.string copy];
NSLog(@"pasteboard:%@",string);});
});
}