这是将文件上传到服务器的最佳方式

时间:2015-02-25 12:57:20

标签: ios objective-c xcode swift

我们有一个iOS应用程序。一个基本的事情是,将图像,pdf和txt文件上传到服务器。我们使用iOS 8.1.3的iPad,该应用程序是InHouseDistribution。

目前我们使用BlackRaccoon通过ftp传输数据,但有时在随机计算图像后,iPad的内存已满,应用程序崩溃。

我有facebook或whatsapp等应用程序。他们传输文件而不会崩溃。

您是否知道是否有更好的方法可以将文件从iPad传输到服务器。

感谢您的每一个提示。

3 个答案:

答案 0 :(得分:1)

我会查看生命周期,如果在内存密集的操作周围使用@autoreleasepool。一个典型的问题是对循环内的许多图像执行操作。

使用仪器检查由于保留但未泄漏的内存导致的泄漏和内存丢失。后者是未使用的内存,仍然指向。在仪器上的分配工具中使用标记生成(快照)。

如何使用“快照”查找内存褶皱,请参阅:bbum blog

基本上,该方法是运行Instruments分配工具,获取快照,运行代码的迭代并重复另外3到4次快照。这将指示在迭代期间分配但未释放的内存。

要弄清楚披露的结果,以查看个别分配。

如果您需要查看对象使用仪器的保留,释放和自动释放的位置:

在仪器中运行,在分配中设置“记录参考计数”(对于Xcode 5及更低版本,您必须停止记录以设置选项)。导致应用程序运行,停止录制,向下钻取,您将能够看到所有保留,发布和自动释放的位置。

答案 1 :(得分:0)

这可能会有所帮助

NSData *imageData = UIImageJPEGRepresentation(image, 0.6);

    NSString *base64String;

    if(imageData!=nil)
    {
        base64String = [CMCrypto base64EncodeData:imageData];
    }

    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:nil];
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    [_uploadPhoto callServiceWithStringAndImage:[NSString stringWithFormat:@"%@",jsonString] ImageBase64:[NSString stringWithFormat:@"%@",base64String]];

答案 2 :(得分:0)

首先,您应该知道如何确定问题。在您的情况下,问题不是“如何将文件上传到服务器”

这种情况下的问题是“如何管理内存”。因为当你准备上传文件时,如果你没有管理它们,那么它在内存中仍然存在。

文件,尤其是图像,会占用你内存中的大量空间,所以当你循环上传功能时,它所占用的内存会增加无穷大。

因此,您应该阅读一些文章,关于Memory Management的教程来解决您的问题。

我认为retain cycle是问题的原因。所以,看看strong,weak referenceweak delegateblock,你可以找到一些东西。