我需要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