ARC 不允许将非 Objective-C 指针类型“const char *”隐式转换为“id”
Posted
技术标签:
【中文标题】ARC 不允许将非 Objective-C 指针类型“const char *”隐式转换为“id”【英文标题】:Implicit conversion of a non-Objective-C pointer type 'const char *' to ‘id’ is disallowed with ARC 【发布时间】:2014-08-04 22:09:58 【问题描述】:我正在尝试将 NSString 转换为字节数组。然后我需要将字节数组保存在字典中。所以我愿意
[dict setObject:[plainString UTF8String] forKey: key];
但是我得到了编译错误
Implicit conversion of a non-Objective-C pointer type 'const char *' to ‘id’ is disallowed with ARC
【问题讨论】:
我正在使用 AFNetwork 将数据发送到 Google blobstore。我似乎需要字节数组才能成功。 使用 NSString 或 NSData。 见 - ***.com/questions/901357/… - 您可以简单地将您的字符串转换为 NSData,然后您应该能够将其传递给 AFNetworing 【参考方案1】:NSDictionary 要求键/值是 Objective-C 对象。您是否有理由不能在您尝试生成的字典中使用您的 NSString?
如果您真的只需要原始字节,则需要将这些字节装箱到 NSValue
或 NSData
对象中。
【讨论】:
我正在尝试解决一个更大的问题:***.com/questions/24747809/…【参考方案2】:如果dict
是NSDictionary
,则不能存储非对象。 Cocoa 数据结构NSMapTable
可以存储非对象指针,也可以将非对象数据包装在NSData
实例中。
我不得不质疑你为什么要这样做。为什么不只存储 NSString
并仅在需要时调用 convert?
【讨论】:
我正在尝试解决一个更困难的问题:***.com/questions/24747809/…以上是关于ARC 不允许将非 Objective-C 指针类型“const char *”隐式转换为“id”的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C在ARC下,把strong指针设置为nil,请问这样不会不释放指针的内存空间?
Objective-C中,ARC下的 strong和weak指针原理解释