Вы должны предположить, что он может видоизменяться, поскольку это подпись, и нет документации, которая в противном случае отрицает это.
Поэтому мой ответ таков: это потому, что подпись SEL
не может / не можетизмените на NSMutableString
s, чтобы оно было объявлено неконстантным.
Вот несколько NSString
вариантов создания, которые предлагают немного больше безопасности без копирования:
CFStringCreateWithBytesNoCopy
CFStringCreateWithCStringNoCopy
CFStringCreateWithCharactersNoCopy
Вероятность того, что NSString
API-интерфейсы, о которых идет речь, также используют их.
CF-API предоставляют более подходящие функции для изменяемых вариантов, например, CFStringCreateMutableWithExternalCharactersNoCopy
, и это, вероятно, то, что NSMutableString
будет использовать.