Objective c protobuf中创建的调度信号量导致内存泄漏
我在应用程序中使用protoBuf与服务器通信,在检测应用程序之后,我发现初始化任何新的protoBuf对象都会导致新的泄漏。我已经搜索了很多关于这个问题的信息,但是没有找到任何有用的信息 我的项目使用ARC而protoBuf不使用,我在构建阶段添加了“-fno objc ARC”标志,这样编译器就不会对protoBuf类使用ARC 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
+ (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中添加一个票证以便他们可以调试它吗?是的,这听起来像是一个很好的错误报告