我需要返回NSString
作为char *
:
char *inboxPath (void)
{
NSURL * url = [[[[NSFileManager defaultManager]
URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"inbox.txt"];
return [[NSString stringWithFormat:@"%@", url] UTF8String];
}
我得到:从结果类型为'char *'的函数返回'const char *'会丢弃限定符
为什么得到这个以及如何解决?
显然我不太了解C,是否有更简单的方法可以做到这一点?
最佳答案
功能:
char* inboxPath (void);
返回
char*
,而-[NSString UTF8String]
返回const char*
。您要删除的限定词是const
。为了解决这个问题,您应该声明您的函数:const char* inboxPath (void);
更改不可变(
const
)数据是引入未定义行为的一种常用方法,因此,您一定要避免删除const
限定符。如果需要可变的
char
缓冲区,请复制-[NSString UTF8String]
返回的utf8字符串的副本。
关于objective-c - 我为什么得到:从结果类型为char的函数返回const char *丢弃限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8618413/