【发布时间】:2013-03-06 13:29:27
【问题描述】:
在ViewDidAppear,
[self performSelectorInBackground:@selector(generatePdf) withObject:nil];
被调用。这会在视图加载后立即生成一个大 PDF。为了考虑内存不足的问题,我可以在启动后停止该进程吗?使用
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(generatePdf) object:nil];
不起作用,大概是因为视图一出现就已经调用了它。如果应用收到didReceiveMemoryWarning,我想停止这个过程,所以我正在寻找一个解决方案,可以在我的- (void)didReceiveMemoryWarning 方法中完全停止它
- (void)viewDidAppear:(BOOL)animated
{
LogCmd();
[super viewDidAppear:animated];
if (self.pdfData == nil) {
// Generate PDF
[self performSelectorInBackground:@selector(generatePdf) withObject:nil];
}
}
....some code
- (void)didReceiveMemoryWarning {
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(generatePdf) object:nil];
}
【问题讨论】:
-
你可以有一个变量并且可以改变它的值,根据这个值你可以从
generatePdf方法返回。 -
你的意思是做一个布尔/标志,检查它的值,如果运行取消执行选择器?我如何从
generatePDF返回? -
不,我的意思是,如果您在
generatePdf中执行某些任务,并且在此您可以检查 bool 值是否返回或继续处理 pdf -
好的,谢谢您的回复。不知道我明白了,我添加了更多代码
标签: ios objective-c cocoa-touch