【问题标题】:Incompatible pointer types assigning to 'NSMutableData *' from 'NSData *'从“NSData *”分配给“NSMutableData *”的不兼容指针类型
【发布时间】:2015-02-13 14:12:59
【问题描述】:

我收到错误

“分配给'NSMutableData *'的不兼容指针类型来自 'NSData *'"

据我所知,它必须是警告而不是错误。所以我认为我的 Xcode Project 设置有什么问题吗?

这是错误的图像。

【问题讨论】:

标签: ios nsdata incompatibility nsmutabledata


【解决方案1】:

这应该是一个错误,因为当有人获得明显可变的数据并尝试对其进行变异时,它会在运行时崩溃。

基本上,你不应该做你正在做的事情。使用mutableCopy 确保数据是可变的,或者,当您调用构造函数时,请确保在NSMutableData 上调用它。

【讨论】:

    【解决方案2】:

    看起来你的self.activeDownload 被声明为 NSMutableData 类型,所以编译器让你知道赋值无效(即你不能在赋值后改变数据)。只需将NSData 更改为NSMutableData

    self.activeDownload = [NSMutableData dataWithContentsOfFile:filePath];
    

    【讨论】:

      【解决方案3】:

      你很幸运,这是一个错误。只有完全没有经验的程序员才会把这当作一个警告。如果您的代码中存在错误,您希望编译器告诉您还是必须开始调试?

      NSMutableData 表示可以更改对象。分配一个 NSData 对象意味着您的代码现在认为该对象可以更改,但如果您尝试,您将在运行时崩溃。这真的是你想要的吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-29
        • 2018-11-17
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多