我正在 DragonFire SDK 中开发一个 iPhone 应用程序,在该应用程序中我使用 NetSend() 拉出一个图像以显示,以及一堆文本文件,我将在本地解析和存储在 SQLite 数据库中以便快速查询。(这是因为数据在没有智能的服务器上,只是通过 FTP 传输到适当位置的平面文件。)NetSend 调用的位如下所示:
NetSend("http://some/path/images/some-image.png", ReceivedThumbnail);
NetSend("http://some/path/Downloads/file1.txt", ReceivedFile1);
NetSend("http://some/path/Downloads/file2.txt", ReceivedFile2);
NetSend("http://some/path/Downloads/file3.txt", ReceivedFile3);
NetSend("http://some/path/Downloads/file4.txt", ReceivedFile4);
NetSend("http://some/path/Downloads/file5.txt", ReceivedFile5);
显然我已经更改了文件名和所有内容,以保护无辜者。这是其中一个回调的示例:
int ReceivedThumbnail(int event, char *response, int length) {
printf("ReceivedThumbnail\n");
if (event == 0) return 0;
FileDelete("Thumbnail.png");
int ThumbnailFile = FileCreate("Thumbnail.png");
FileWrite(ThumbnailFile, response, length);
FileClose(ThumbnailFile);
return 0;
}
我已经确认正在执行 NetSend 块,并且文件存在于 Web 服务器上,但大多数时候回调从未触发。其中一些尚未编写,因此只包含 printf() 但它从未发生过。
奇怪的是,在昨天对此感到沮丧并打算做其他事情之后,当我今天早上回来再次尝试时,其中一个确实运行了,足以让我看到代码中的错误。我修复了这个错误,但现在它不会再次运行。有问题的文件每天都会更新,所以我想知道,NetSend 中是否存在某种缓存,如果该文件在 NetSend 之前运行后没有更新,它不会触发回调?如果是这样,有没有办法禁用或覆盖它?(我可以看到在生产中使用它有多好;事实上,我已经编写了自己的缓存代码以避免调用 NetSend,尽管它目前已被禁用。但是在我开发代码时,我需要得到这个回调继续发生,直到我将数据正确输入 SQLite。)
关于检查什么的任何其他想法?