Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c protobuf中创建的调度信号量导致内存泄漏_Objective C_Memory Leaks_Protocol Buffers_Semaphore - Fatal编程技术网

Objective c protobuf中创建的调度信号量导致内存泄漏

Objective c protobuf中创建的调度信号量导致内存泄漏,objective-c,memory-leaks,protocol-buffers,semaphore,Objective C,Memory Leaks,Protocol Buffers,Semaphore,我在应用程序中使用protoBuf与服务器通信,在检测应用程序之后,我发现初始化任何新的protoBuf对象都会导致新的泄漏。我已经搜索了很多关于这个问题的信息,但是没有找到任何有用的信息 我的项目使用ARC而protoBuf不使用,我在构建阶段添加了“-fno objc ARC”标志,这样编译器就不会对protoBuf类使用ARC protoBuf用于初始化新实例的代码如下: + (instancetype)message { return [[[self alloc] init] aut

我在应用程序中使用protoBuf与服务器通信,在检测应用程序之后,我发现初始化任何新的protoBuf对象都会导致新的泄漏。我已经搜索了很多关于这个问题的信息,但是没有找到任何有用的信息

我的项目使用ARC而protoBuf不使用,我在构建阶段添加了“-fno objc ARC”标志,这样编译器就不会对protoBuf类使用ARC

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]
方法来创建新实例

这是仪器泄漏工具的调用树:


如果protoBuf没有使用ARC,那么在处理完信号量后,它需要分派信号量@TyR谢谢,因为这是一个已编译的版本,我不应该自己更改它,你认为我应该在protobuf github中添加一个票证以便他们可以调试它吗?是的,这听起来像是一个很好的错误报告