iOS App:由于内存问题终止[与swiftSlowAlloc或UIImage相关]

Nas*_*iba 12 iphone memory-leaks objective-c uiimage ios

目前我在构建iOS应用程序时遇到内存问题.我使用Instruments检查了内存泄漏.我发现有一种泄漏不断出现名为swift_slowAlloc,我不知道.下面给出了错误的片段.

内存泄漏

我认为可能发生的另一个原因是由于在我的应用中加载了几个UIImages.为了提供背景,我在我的应用程序中拍摄原始图像的各个部分,并对它们进行一些处理.但是,我不需要保留图像以供进一步计算.我使用autoreleasepool释放UIImage; 但我怀疑它是否有效.下面给出一个例子:

   @autoreleasepool {

        UIImage *imageResized = MatToUIImage(resized28);

        // MARK: Send resized28 to CNN and get the output. Fill the dict then

        NSString *CNNScore;
        CNNScore = [myclass CNNfloat:imageResized W1:W1 W2:W2 Wf1:Wf1 Wf2:Wf2 B1:B1 B2:B2 Bf1:Bf1 Bf2:Bf2];

        imageResized = nil;
        xtn = [NSNumber numberWithInteger:xt];
        xbn = [NSNumber numberWithInteger:xb];
        ytn = [NSNumber numberWithInteger:yt];
        ybn = [NSNumber numberWithInteger:yb];

        symbol = [NSString stringWithFormat:@"%@", CNNScore];
        symtype = [NSString stringWithFormat:@"%@", [scoreDic objectForKey: symbol]];

        numberInDict = [NSString stringWithFormat:@"%i", n];


        inToMaroof = [NSArray arrayWithObjects: xtn, xbn, ytn, ybn, symbol,symtype, nil];

        [toMaroof setObject: inToMaroof
                     forKey: numberInDict];
        }
    }
Run Code Online (Sandbox Code Playgroud)

有人可以就此问题提出任何建议吗?

Nye*_*Tun 0

即使使用 ARC,以下是一些可能导致程序内存泄漏的原因:

  1. 您在子对象中设置对父对象的强引用。这会导致保留周期。
  2. 您可以在接口中设置对委托的强引用。
  3. 当您在转移所有权后进行免费桥接时,您忘记释放对象。
  4. 您忘记为块中传递的对象设置弱引用。