Глядя на профайлер памяти, он показывает увеличение использования памяти, медленное, но устойчивое. Все это в следующих 2-х линиях в NSStream
Delegate
:Утечка памяти в iOS с профилировщиком
- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
case NSStreamEventHasBytesAvailable:
{
if (theStream == inputStream) {
int bytesRead = 0;
static uint8_t buffer[1024];
bytesRead = [inputStream read:buffer maxLength:sizeof(buffer)]; -- this line causing the memory to grow
//[inBuffer appendBytes:buffer length:bytesRead];
//Do something
}
break;
}
}
Я думаю, что буфер заполняется каждый раз, когда он получает там и покраснел, так как его местные. Так в чем проблема?
Возможно, вам нужно показать больше кода, связанного с утечкой – chancyWu
Я не верю, что проблема лежит в коде, который вы нам поделили. Если вы ищете утечки в профилировщике, он показывает вам, где был выделен просочившийся объект, но он не сможет (не может) показать вам источник утечки. BTW, вы запустили этот код через статический анализатор («Анализировать» в меню «Продукт» Xcode)? – Rob
Нет, я не запускал его через статический анализатор, я попробую. Возможно, что какой-то другой код является проблемой, но вряд ли есть какой-либо код в другом месте, о котором я могу думать, этот тест так же прост, как чтение байтов в буфер, как я показал. Когда я замечаю, что одна строка, память становится устойчивой. – IronMan1980