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

Memory management ReactiveCocoa:所有信号完成后RAC对象仍在内存中,memory-management,ios8,profiling,instruments,reactive-cocoa,Memory Management,Ios8,Profiling,Instruments,Reactive Cocoa,我正在iOS8上开发一个基于reactivecocoa的应用程序。该应用程序主要执行网络操作 我注意到,当我所有的信号都完成并且所有的信号引用都为空时,当我检查仪器时,我在内存中看到一些RAC*对象仍然活着。这是故意的还是我的代码泄漏内存?当我运行信号时,会出现一个活动激增,我看到许多RAC对象被分配,然后它会返回到这个状态,如下面的屏幕截图所示 每个后续调用都以相同的状态结束。所以我不是很担心 谢谢,这些都是RAC使用的共享全局实例,因此不需要为每次使用它们分配内存。我肯定有一个更为华丽的词来

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

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

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


谢谢,

这些都是RAC使用的共享全局实例,因此不需要为每次使用它们分配内存。我肯定有一个更为华丽的词来形容这种优化,但我想不出它是什么。例如,查看RACUnit:


由于所有RAC单元都是相同的,RAC从不费心创建多个实例。这就是你所看到的一切。

虽然它不是单例,但单例是一种设计模式,一种接口级别的东西。这是实现级别的事情。我想只是实习?
+ (RACUnit *)defaultUnit {
    static dispatch_once_t onceToken;
    static RACUnit *defaultUnit = nil;
    dispatch_once(&onceToken, ^{
      defaultUnit = [[self alloc] init];
    });

    return defaultUnit;
}