为什么我得到:从结果类型为char*的函数返回const char*丢弃限定符

Ali*_*Ali 2 c objective-c char nsstring

我需要TE返回NSStringchar *:

char *inboxPath (void) 
{ 
    NSURL * url = [[[[NSFileManager defaultManager] 
                 URLsForDirectory:NSDocumentDirectory 
                 inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"inbox.txt"];
    return [[NSString stringWithFormat:@"%@", url] UTF8String]; 
}
Run Code Online (Sandbox Code Playgroud)

我得到:从结果类型为'char*'的函数返回'const char*'会丢弃限定符

为什么我得到这个以及如何解决它?
显然我不太了解C,有没有更简单的方法呢?

jus*_*tin 6

功能:

char* inboxPath (void);
Run Code Online (Sandbox Code Playgroud)

返回char*-[NSString UTF8String]返回const char*.你要删除的限定符是const.要解决这个问题,你应该声明你的功能:

const char* inboxPath (void);
Run Code Online (Sandbox Code Playgroud)

变换immutable(const)数据是引入未定义行为的一种常见方式,因此您肯定希望避免丢弃const限定符.

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