gpt4 book ai didi

ios - 在 iOS 的单独线程中创建 PDF 文件

转载 作者:行者123 更新时间:2023-11-29 13:32:45 27 4
gpt4 key购买 nike

我在 iOS 中使用 UIKit 从各种 XIB 文件创建一个 PDF 文件,我已将这些文件用于伪装文件的布局。

我可以成功生成PDF文件。但是我在主线程中这样做,我想将它移到一个单独的线程中,这样 UI 就不会“卡住”。

我曾尝试使用 GCD 这样做,但没有成功,并且返回了一些错误。

我有这样的东西:

[MBProgressHUD showHUDAddedTo:self.view animated:YES];

__block NSData *pdfNote = nil;

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),^{
pdfNote = [self generatePdfFile];
dispatch_sync(dispatch_get_main_queue(),^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
});
});

我看到的错误是:

failed to find PDF header: `%PDF' not found.
failed to find PDF header: `%PDF' not found.
failed to find PDF header: `%PDF' not found.
failed to find PDF header: `%PDF' not found.
2012-07-12 15:31:15.427 IrmaosPeixoto-CRM[7601:1a03] bool _WebTryThreadLock(bool), 0x3404d0: Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UIKit from a secondary thread. Crashing now...
1 _ZL17_WebTryThreadLockb
2 WebThreadLock
3 -[UITextView setFrame:]
4 UIViewCommonInitWithFrame
5 -[UIView initWithCoder:]
6 -[UIScrollView initWithCoder:]
7 -[UITextView initWithCoder:]
8 UINibDecoderDecodeObjectForValue
9 UINibDecoderDecodeObjectForValue
10 -[UINibDecoder decodeObjectForKey:]
11 -[UIView initWithCoder:]
12 -[UIClassSwapper initWithCoder:]
13 UINibDecoderDecodeObjectForValue
14 -[UINibDecoder decodeObjectForKey:]
15 -[UIRuntimeConnection initWithCoder:]
16 UINibDecoderDecodeObjectForValue
17 UINibDecoderDecodeObjectForValue
18 -[UINibDecoder decodeObjectForKey:]
19 -[UINib instantiateWithOwner:options:]
20 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:]
21 +[UIView(Extensions) loadFromNib:owner:]
22 -[FinishOrderViewController generatePdfFile]
23 __43-[FinishOrderViewController buttonPressed:]_block_invoke_0
24 _dispatch_call_block_and_release
25 _dispatch_worker_thread2
26 _pthread_wqthread
27 start_wqthread

补充说明:PDF 生成涉及对核心数据的一些访问以获取一些信息。

是否有更好的(可行的)方法来实现我的需求?

编辑 我错了,我使用 UIKit 而不是核心图形来生成 PDF。

最佳答案

如果您从 XIB 文件加载内容,请在主线程中加载包中的元素。

我能够通过在主线程中加载 NSBundle 中的元素然后在另一个线程中运行所有内容来成功生成 PDF 文件。

关于ios - 在 iOS 的单独线程中创建 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11454181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com