我需要TE返回NSString
爲char *
:從功能回報 '爲const char *':爲什麼我得到:從結果char類型的函數返回爲const char *丟棄預選賽
我得到結果類型'char *'丟棄限定符
爲什麼我得到這個以及我如何解決它?
顯然我不太瞭解C,有沒有更簡單的方法來做到這一點?
我需要TE返回NSString
爲char *
:從功能回報 '爲const char *':爲什麼我得到:從結果char類型的函數返回爲const char *丟棄預選賽
我得到結果類型'char *'丟棄限定符
爲什麼我得到這個以及我如何解決它?
顯然我不太瞭解C,有沒有更簡單的方法來做到這一點?
功能:
char* inboxPath (void);
回報char*
而-[NSString UTF8String]
回報const char*
。您要刪除的限定符是const
。爲了解決這個問題,你應該聲明你的函數:
const char* inboxPath (void);
變異不變(const
)數據是引進未定義行爲的一個常用的方法,所以你一定要避免摔落const
預選賽。
如果您需要一個可變的char
緩衝區,請複製由-[NSString UTF8String]
返回的utf8字符串。
限定符添加到返回值類型的函數:
const char *inboxPath(...)
UTF8String
返回const char *
,所以你可能想在你的函數返回一個類型相同。
注意:「返回的C字符串是一個指向字符串對象內部結構的指針,該對象的生命週期可能比字符串對象的生命週期短,並且一定不會有更長的生命週期。因此,如果需要將C字符串存儲在調用此方法的內存環境之外,則應複製C字符串。「 - [NSString](https://developer.apple.com/library/mac/documentation/Cocoa/參考/基金/班/ NSString_Class /參考/ NSString.html#// apple_ref/DOC/UID/20000154-CJBHCCED) – 2014-06-30 09:16:41