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

标签 objective-c c nsstring char

我需要返回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/

相关文章:

objective-c - 使用 ARC 发送到已释放实例的消息

ios - RKMappingresult 在带有 restkit 的 64 位 iPhone 中返回不同的结果

c - 如何为当前项目配置 .ycm_extra_conf.py include PATH

c - 交换函数返回数组

ios - 如何在后台将一个 iOS 应用程序的 NSString 对象的值更改为另一个 iOS 应用程序?

ios - 在无法存储原始字符串的情况下可逆地对 NSString 进行加扰

iphone - 没有实际调用 pushviewcontroller 的 pushviewcontroller 动画

objective-c - MacOS:UDP/TCP 数据包之间出现奇怪的延迟

c - 数据包重传

iOS:将 NSArray 放在 NSString 中