【发布时间】:2019-06-07 08:53:54
【问题描述】:
我正在尝试与 iOS 硬件进行通信,以查看设备是否使用内置扬声器。一切正常,但是每当我使用此代码时,都会出现内存泄漏。我从我的 C++ 代码中调用它,方法是将它放在一个用于 Objective-C++ 的 .mm 文件中。这是我第一次尝试使用objective-c,所以我很难知道泄漏可能来自哪里。我什至不知道这段代码是否有问题,我从堆栈溢出或iOS API的某些东西中稍微调整了一下?这段代码也被非常频繁地调用。
根据我对objective-c的一点了解,我试图释放函数中的一些对象,但这会在音频驱动程序更改设置(采样率等)时导致问题并导致崩溃。
bool Headphones::isHeadsetPluggedIn() {
AVAudioSessionRouteDescription* route = [[AVAudioSession sharedInstance] currentRoute];
for (AVAudioSessionPortDescription* desc in [route outputs]) {
if ([[desc portType] isEqualToString:AVAudioSessionPortBuiltInSpeaker])
{
return NO;
}
}
return YES;
}
【问题讨论】:
标签: c++ objective-c memory-management memory-leaks objective-c++