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