Вот что я имею в виду.
libobjc.A.dylib`_objc_trap():
0x14c13f4: pushl %ebp
0x14c13f5: movl %esp, %ebp
0x14c13f7: ud2
Итак, в основном я пытаюсь понять, как работает NSString
и пытается найти способ изменить указатель, который указывает на "настоящую (char *) строку", которая называется константой.
Итак, я обнаружил, что есть указатель isa, который указывает на (__NSCFConstantString *
).
Это заставило меня подумать, что если я изменю этот указатель, тогда я смогу изменить строку.
Код, который я пробовал, был следующим:
NSString *st3 = [[NSString alloc] initWithString:@"hihi"];
[st3 setValue:@"change" forKey:@"isa"];
И результат, показывающий, что
До:
После того, как:
Кажется измененным, но он изменил каждый NSString
объект с строкой @ "hihi".
И тогда то, что я сделал, было [st3 class], надеясь, что оно даст указатель isa
, после чего я получил сообщение об ошибке, размещенное вверху.
Не могли бы вы объяснить, что происходит и почему оно ведет себя так? И, это там какой-нибудь способ стажера (я не уверен в этом термине), как в Java?
Пожалуйста, не говорите, просто используйте "NSMutableString". Я просто пытаюсь понять это, видя, что может быть какой-то способ сделать это.