2011-12-23 104 views

回答

6

功能:

char* inboxPath (void); 

回报char*-[NSString UTF8String]回报const char*。您要删除的限定符是const。为了解决这个问题,你应该声明你的函数:

const char* inboxPath (void); 

变异不变(const)数据是引进未定义行为的一个常用的方法,所以你一定要避免摔落const预选赛。

如果您需要一个可变的char缓冲区,请复制由-[NSString UTF8String]返回的utf8字符串。

+1

注意:“返回的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

3

限定符添加到返回值类型的函数:

const char *inboxPath(...) 

UTF8String返回const char *,所以你可能想在你的函数返回一个类型相同。

相关问题