ReactiveCocoa:RAC对象在所有信号完成后仍在内存中

时间:2014-10-20 13:12:44

标签: memory-management ios8 profiling instruments reactive-cocoa

我正在基于反应可可在iOS8上开发一个应用程序。该应用程序主要进行网络操作。

我注意到,当我的所有信号都完成并且所有信号引用都被清零时,我通过仪器检查时,内存中仍然看到一些RAC *对象仍存在。这是打算还是我的代码泄漏内存?当我运行信号时,有一个活动激增,我看到很多RAC对象被分配,然后它回落到这个状态,如下面的屏幕截图所示。

每个后续调用都以相同的状态结束。所以我不是很担心它。

http://imgur.com/sCL8Y3p

谢谢,

1 个答案:

答案 0 :(得分:0)

这些都是RAC使用的共享全局实例,因此它不需要为每次使用它们分配内存。我确信这个优化有一个更好的词,但我无法想象它是什么。例如,请查看RACUnit

+ (RACUnit *)defaultUnit {
    static dispatch_once_t onceToken;
    static RACUnit *defaultUnit = nil;
    dispatch_once(&onceToken, ^{
      defaultUnit = [[self alloc] init];
    });

    return defaultUnit;
}

由于所有RACUnit都是相同的,因此RAC从不打算制作多个实例。这就是你所看到的一切。