protobuf中的dispatch_semaphore_create会导致内存泄漏

时间:2018-04-19 15:48:41

标签: objective-c memory-leaks protocol-buffers semaphore

我在我的应用程序中使用protoBuf与服务器通信,在检测应用程序之后我认为初始化任何新的protoBuf对象会导致新的泄漏。我已经对这个问题进行了很多搜索,但找不到任何有用的东西。

我的项目使用ARC而protoBuf没有,我添加了#34; -fno-objc-arc"在构建阶段标记,因此编译器不会将ARC用于protoBuf类。

继承了protoBuf用于初始化新实例的代码:

+ (instancetype)message {
  return [[[self alloc] init] autorelease];
}

- (instancetype)init {
    if ((self = [super init])) {
    messageStorage_ = (GPBMessage_StoragePtr)(((uint8_t *)self) + class_getInstanceSize([self class]));
    readOnlySemaphore_ = dispatch_semaphore_create(1);
   }
}

我调用[newProtoBufInstance message]方法来创建新实例。

和heres仪器泄漏工具的调用树:

instrument leak tool's call tree

0 个答案:

没有答案