Я использовал инструменты, чтобы обнаружить утечку памяти в моем приложении, но я просто не могу исправить это или найти обходной путь;это мое первое приложение и первый набег в Objective-C, так что я, вероятно, делаю что-то довольно глупое.Кто-нибудь может помочь?Я предполагаю, что объект NSString "str" не освобождается, но как мне его освободить и затем вернуть?
Вот исходный код:
- (NSString *)MakeMsg:(uint8_t)slaveAddr FunctionCode:(uint8_t)functionCode StartReg: (uint16_t)startReg Range:(uint16_t)range {
NSString *str;
uint8_t CRCbyte1;
uint8_t CRCbyte2;
uint8_t buf[MODBUS_MSG_LEN_BYTES+LRC_BYTE+ASCII_WRAPPER];
uint8_t ASCIIbuf[(MODBUS_MSG_LEN_BYTES*2)+LRC_BYTE+ASCII_WRAPPER];
buf[0] = slaveAddr;
buf[1] = functionCode;
buf[2] = (uint8_t)(startReg >> 8);
buf[3] = (uint8_t)(startReg & 0xFF);
buf[4] = (uint8_t)(range >> 8);
buf[5] = (uint8_t)(range & 0xFF);
if (RTUMode==YES){
// calculate the CRC bytes
[self GenerateCRC16:buf CRC1:&CRCbyte1 CRC2:&CRCbyte2];
buf[6] = CRCbyte1;
buf[7] = CRCbyte2;
}
if (ASCIIMode==YES){
// calculate the LRC byte
[self GenerateLRC:buf Length:(uint8_t)MODBUS_MSG_LEN_BYTES ASCIIBuffer:ASCIIbuf];
// convert the buffer to ASCII
[self BufToASCII:buf ASCIIBuffer:ASCIIbuf];
// add the ASCII wrapper ':',buf,'CR','LF'
[self AddASCIIWrapper:buf ASCIIBuffer:ASCIIbuf];
}
str = [NSString stringWithUTF8String:(const char *)ASCIIbuf]; // <-- Memory leak identified as this line right here by Instruments
return str;// Return the string value of our command so we can use it in a comms log display.
}
Любая помощь будет принята с благодарностью!Спасибо Мэтью