cStringUsingEncoding:尽管它返回一个动态分配的C字符串(从它的文档中),但它返回一个“const char *”。那么,const在这里的目的是什么?我们可以简单地通过强制转换为char *来修改返回的C字符串。为什么cStringUsingEncoding:返回const char *而不是char *?
cStringUsingEncoding:
返回的C字符串被保证是唯一有效,直到该 接收机被释放时,或直到当前自动释放池被清空, 以先到者为准。
我认为库遵循const指针的常见做法;预计不会被修改或发布。
从Objective-C运行时;
const char * object_getClassName(id obj) - 没有指定关于返回的字符串。
char * method_copyArgumentType(方法方法,无符号整型索引) - 必须使用free()释放字符串。 (可能是它的建议,因为它返回一个副本。)
所以它是关于const正确性的;可修改性和大多数所有权,我说得对吗? – lockedscope
是的,根据其可修改性,代码是常量正确的,由其所有权决定。 –
但是我们如何从所有权得出关于可修改性的结论?(如果我们讨论的是内存中的规则,则可修改性和所有权afaik之间没有关系。) – lockedscope