Я столкнулся со странной проблемой, когда строка константного символа повреждена после того, как она была инициализирована.
В моем файле .m у меня есть указатель, объявленный так:
const char *s;
@implementation MyClass
...
@end
Он инициализирован в -init
и выглядит хорошо в этот момент:
-init
{
if (self = [super init]) {
s = [@"obfuscatedString" deobfuscatedCString];
}
return self;
}
Позже, когда я его прочитал, адрес указателя не изменился, но значение было перезаписано.
Я сократил ее до базовых элементов и могу подтвердить, что строка не используется иным образом, и, похоже, нет ничего, что могло бы ее испортить.
Итак, что происходитна?Есть ли какая-то фундаментальная цель - c, о которой я не знаю?
Любая помощь будет принята с благодарностью.